Vous pouvez générer un projet à partir de start.spring.io vers ce problème à partir de https://start.spring.io/starter.zip?type=gradle-project&language=java&bootVersion=2.2.5.RELEASE&baseDir=demo&groupId=com.example&artifactId=demo&name = demo & description = Demo% 20project% 20for% 20Spring% 20Boot & packageName = com.example.demo & packaging = jar & javaVersion = 1.8 & dependencies = h2, data-jpa, web
J'ai une application SpringBoot multi-module construite avec gradle, il y a un tas de tests d'intégration SpringBoot. Quand je fais une construction, je me retrouve avec une sortie de l'arrêt SpringBoot vers la console comme indiqué ci-dessous. Comment désactiver cette sortie?
± |master ↑1 {1} S:3 U:10 ✗| → ./gradlew build
> Task :core:test
2020-02-01 11:20:33.529 INFO 24114 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:33.531 INFO 24114 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-02-01 11:20:33.538 INFO 24114 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
> Task :email:test
2020-02-01 11:20:43.820 INFO 24150 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:43.820 INFO 24150 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:43.822 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated...
2020-02-01 11:20:43.822 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-02-01 11:20:43.830 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2020-02-01 11:20:43.830 INFO 24150 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed.
> Task :security:test
2020-02-01 11:20:54.941 INFO 24188 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-02-01 11:20:54.944 INFO 24188 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-02-01 11:20:54.952 INFO 24188 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 46s
57 actionable tasks: 54 executed, 3 up-to-date
Pour référence, une application créée à partir de start.spring.io avec gradle ne produit aucune sortie à l'écran
./gradlew build
BUILD SUCCESSFUL in 779ms
5 actionable tasks: 5 up-to-date
Au lieu de cela, la sortie est placée dans build/reports/
Dans mon cas, je n'ai PAS apporté de modifications à la configuration de journalisation fournie avec le démarrage. Il n'y a pas de logback.xml ou de modification du fichier application.yml pour les niveaux de journalisation. Je m'attends à ce que gradle capture le système et les erreurs système et les envoie au, build/reports/
mais certaines sorties semblent s'échapper vers le système.
INFO
(ou supprimer complètement).INFO
des lignes de journal de niveau. Ils proviennent des points d'arrêt comme vous le voyez, et ils finissent là où la journalisation est configurée. Je suppose qu'en théorie, les messages pourraient finir à un endroit différent de celui prévu, en raison de la modification de la configuration de l'enregistrement et des hooks exécutés de manière asynchrone par la suite. Donc, il faudrait par défaut ces lignes à la console, comme la configuration précédente a été déchargée. Peut être.Réponses:
@eskatos a raison. Le gestionnaire de journalisation est supprimé après l'exécution du scénario de test avant l'arrêt du processus de travail. Tous les hooks d'arrêt sont exécutés lorsque le processus de travail est arrêté et sont redirigés vers la console.
Comme ces messages sont générés par Spring Boot, le meilleur endroit serait de filtrer les messages d'arrêt à l'aide du fichier XML de configuration du test de déconnexion.
Quelque chose comme logback-test.xml dans src / test / resources
build.gradle
la source
On peut désactiver la sortie avec ou décider quoi enregistrer d'une tâche, afin de contrôler le stdout / stderr de la JVM de test:
TestLoggingContainer
testLogging.showStandardStreams = false
onOutput
Test
Ces flux sont
TestLogEvent
STANDARD_OUT
&STANDARD_ERROR
, qui proviennent de la JVM. Quand on peut déterminer unevent.message
contenantextShutdownHook
, on peut sauter la journalisation.la source
INFO
s'agit du niveau de journalisation par défaut pour Spring; on peut définir d'autres niveaux de journalisation, par exemple.logging.level.org.springframework=TRACE
comme variable environnementale.Je pourrais masquer la journalisation de test spécifique aux données de printemps (basée sur ce démarreur de printemps ) en ajoutant le suivi
application.properties
à src / test / resources:logging.level.org.springframework
n'aura pas d'effet par exemple sur l'com.zaxxer.hikari
enregistreur, mais vous avez ici des options flexibles .(
root=ERROR
c'est comme "l'approche du marteau de traîneau").(
src/main/resources
est également possible mais a un effet non seulement au test mais également au moment de l'exécution de l'application) (application.properties
n'est qu'un des nombreux "emplacements" possibles pour cette propriété ... voir aussi: https://docs.spring.io/spring-boot/ docs / current / reference / html / appendix-application-properties.html )Avec cela, j'obtiens une sortie gradle "silencieuse", également sur
clean build
:la source
Gradle a un mode silencieux.
./gradlew build -q
Mais vous avez toujours besoin d'informations sur les tests. vous pouvez utiliser jacoco et sonarqube. Cela a fonctionné pour moi ici et ici .
la source