Możesz wygenerować projekt od start.spring.io do tego problemu z 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 i opis = demo% 20projekt% 20dla% 20Spring% 20Boot i nazwa_pakietu = com.example.demo i opakowanie = jar & javaVersion = 1.8 i zależności = h2, data-jpa, web
Mam wielomodułową aplikację SpringBoot zbudowaną z gradle, jest kilka testów integracji SpringBoot. Kiedy robię kompilację, kończę z pewnym wyjściem z zamykania SpringBoot do konsoli, jak pokazano poniżej. Jak wyłączyć to wyjście?
± |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
W celach informacyjnych aplikacja utworzona ze start.spring.io z gradle nie generuje danych wyjściowych na ekranie
./gradlew build
BUILD SUCCESSFUL in 779ms
5 actionable tasks: 5 up-to-date
Zamiast tego wyjście jest umieszczane w build/reports/
W moim przypadku NIE wprowadziłem żadnych zmian w konfiguracji rejestrowania dołączonej do bootowania. Nie ma pliku logback.xml ani zmian w pliku application.yml dla poziomów rejestrowania. Spodziewam się, że grad przechwytuje system i błąd systemu i wysyła je do, build/reports/
ale niektóre wyjścia wydają się uciekać do systemu.
źródło
INFO
(lub całkowite usunięcie).INFO
wiersze dziennika poziomu. Pochodzą one z haków zamykania, jak widać, i kończą się tam, gdzie skonfigurowano rejestrowanie. Przypuszczam, że teoretycznie komunikaty mogą skończyć się w innym miejscu niż zamierzone, ze względu na zmianę konfiguracji rejestrowania i późniejsze wykonywanie asynchronicznych haków. Więc domyślnie te wiersze byłyby w konsoli, ponieważ poprzednia konfiguracja została zwolniona. Może.Odpowiedzi:
@eskatos ma rację. Menedżer rejestrowania jest usuwany po wykonaniu przypadku testowego przed zamknięciem procesu roboczego. Wszystkie haki zamykania są wykonywane, gdy proces roboczy jest zamykany i są przekierowywane z powrotem do konsoli.
Ponieważ te komunikaty są generowane przez wiosenny rozruch, najlepszym miejscem byłoby filtrowanie komunikatów zamykania za pomocą xml konfiguracji testu logback.
Coś jak logback-test.xml wewnątrz src / test / resources
build.gradle
źródło
Można wyłączyć dane wyjściowe za pomocą lub zdecydować, co należy zarejestrować w zadaniu, aby kontrolować stdout / stderr testowej maszyny JVM:
TestLoggingContainer
testLogging.showStandardStreams = false
onOutput
Test
Te strumienie to
TestLogEvent
STANDARD_OUT
&STANDARD_ERROR
, które pochodzą z JVM. Gdy można określićevent.message
zawartośćextShutdownHook
, można pominąć rejestrowanie.źródło
INFO
jest to domyślny poziom rejestrowania dla wiosny; można ustawić inne poziomy logów, np.logging.level.org.springframework=TRACE
jako zmienna środowiskowa.Mógłbym ukryć rejestrowanie testów specyficznych dla danych wiosennych (na podstawie tego wiosennego startera ), dodając następujące śledzenie
application.properties
do src / test / resources:logging.level.org.springframework
nie będzie miało wpływu na np.com.zaxxer.hikari
rejestrator, ale masz tutaj elastyczne opcje .(
root=ERROR
jest jak „podejście młota saneczkowego”).(
src/main/resources
jest również możliwe, ale ma wpływ nie tylko na test, ale także na środowisko uruchomieniowe aplikacji) (application.properties
jest tylko jedną z wielu możliwych „lokalizacji” dla tej właściwości ... patrz także: https://docs.spring.io/spring-boot/ docs / current / reference / html / appendix-application-properties.html )Dzięki temu otrzymuję „cichą” gradację, również na
clean build
:źródło
Gradle ma tryb cichy.
./gradlew build -q
Ale nadal potrzebujesz informacji o testach. możesz użyć jacoco i sonarqube. To działało dla mnie tu i tutaj .
źródło