2015-02-05 8 views
7

Niedawno zaktualizowałem projekt Grails 2.2 do wersji 2.4.4 i odkryłem, że podczas uruchamiania "testowej aplikacji Grails" wszystkie komunikaty dziennika (informacje, debugowanie, błąd itd.) Są teraz wyprowadzane na konsolę w przeciwieństwie do do wygenerowanych raportów z testów.Jak przekierować komunikaty dziennika do raportów testowych w Grails 2.4.x +?

Poprzednio wszystkie dane wyjściowe dziennika były dołączane do treści raportu z testu, a wynik testu był wyświetlany w konsoli. Teraz domyślnym zachowaniem jest drukowanie komunikatów dziennika w konsoli, co sprawia, że ​​wynik jest trudny do przeanalizowania podczas uruchamiania setek testów.

| Compiling 1 source files.... 
| Running 2 unit tests... 1 of 2 
2015-02-05 12:16:53,965 [main] INFO testapp.HelloController - Hello World Log 
| Completed 1 unit test, 0 failed in 0m 5s 
| Tests PASSED - view reports in /Users/pk/workspace/testapp/target/test-reports 

Potwierdziłem, że jest to domyślne zachowanie Grails 2.4.4 (i prawdopodobnie z jakiegoś wcześniejszego okresu). Co ciekawe, komunikaty wydrukowane bezpośrednio na standardowe wyjście za pomocą polecenia "println" pojawiają się w pliku dziennika.

Czy ktoś wie, jak zmienić to zachowanie, aby wydrukować wszystkie wyniki dziennika do raportu z testu, a nie do konsoli?

+0

Mam dokładnie ten sam problem. Znalazłeś rozwiązanie? – Fernando

+0

Czy możesz pokazać nam swój plik 'grails-app/conf/Config.groovy'? –

+0

Prawdopodobnie rzecz typu Gradle. Sprawdź, czy dodanie 'testLogging.showStandardStreams = false' rozwiązało problem. – Raffaele

Odpowiedz

-1

Dodaj -echoOut przełącznik grails testowej aplikacji, https://grails.org/wiki/1.2%20Release%20Notes

grails test-app -echoOut 

Istnieje wiele innych przydatnych przełączników na testowej aplikacji, a także, w tym:

echa System.err komunikatów:

grails test-app -echoErr 

siła czyste przed uruchomieniem testów (bez Grails robi czystych & & Grails test-app):

grails test-app -clean 

uruchomić tylko testy jednostkowe:

grails test-app unit: 

tylko uruchomić testy integracyjne:

grails test-app integration: 

działać w określonym środowisku:

grails -Dgrails.env=production test-app 

testy wykonywane tylko przez konkretny Klasa testowa (np. com.foo.MyControllerTest s), należy pozostawić wyłączyć „testy” przyrostek

grails test-app com.foo.MyController 

powtórkę tylko testy, które nie powiodło się podczas ostatniego uruchomienia twoje testy

grails test-app to output to console

+0

Niestety to nie zmienia zachowania, flaga -echoOut wysyła dane wyjściowe dziennika na standardowe wyjście, ale nie do raportów z testów. To, czego szukam, to rejestrowanie logów w raportach testowych zamiast na standardowe wyjście, co było domyślnym zachowaniem w wersji 2.2 i poniżej. –