2010-10-01 20 views
19

używam PHPUnit dla testów jednostkowych, lecz gdy fatal error jest wyzwalany, skrypt umiera i nie mam prawidłowe wyjście PHPUnit.PHPUnit: Błąd krytyczny obsługi

Chciałbym, aby wynik PHPUnit pozostał poprawnie sformatowany, ponieważ jest czytany przez wtyczkę do Eclipse. W rzeczywistości błąd krytyczny zatrzymuje PHPUnit, aw dodatku Eclipse wtyczka nie może niczego zinterpretować (ponieważ skrypt PHPUnit miał błąd zamiast go obsługiwać).

Dzięki

+0

jakiego rodzaju błędy krytyczne? jeśli są związane ze składnią lub semantyką, nie masz szczęścia. – stillstanding

Odpowiedz

26

Musisz użyć funkcji izolacji procesu PHPUnit - rozpocznij każdy zestaw testów w nowym procesie.

phpunit --process-isolation ... 

Jest to jedyny sposób, aby upewnić się, że błędy krytyczne nie powodują uszkodzenia wyjścia z phpunit.

czas wykonywania

izolacji procesu mnoży swoje badania czasu pracy, ponieważ dla każdego pojedynczego testu, nowa instancja PHP jest uruchamiany, bootstrap jest wykonywany itp

Aby zmienić tę sytuację, możesz wybierz uruchamianie pełnych przypadków testowych w oddzielnym procesie (@runTestsInSeparateProcesses) lub tylko tych pojedynczych, które czasami są przyczyną zgonu (@runInSeparateProcess).

+1

Bądź zdrów, chociaż znacznie zwiększa to wykonanie testu. Przeszedłem od 4 sekund do 90 sekund, wykonując zaledwie 150 testów na małej aplikacji. – stefgosselin

+0

Można np. Wyłączyć "kopie zapasowe", aby uzyskać lepsze prędkości testowania. Zależy to również od szybkości twojego pliku bootstrap. – cweiske

+0

- izolacja procesowa może spowodować ogromne uszkodzenie mózgu, gdy spróbuję uruchomić 7000+ testów, użyłem 'register_shutdown_function()' w --bootstrap i --printer dla integracji TeamCity. Będę udostępniać źródła później w tym miesiącu. –

2

set_error_handler() nie pomoże ci tam. Możesz złapać fatalne błędy, używając register_shutdown_function()

+0

Jak już powiedziałem, chciałbym mieć błąd PHPUnit (chcę, aby wyjście phpunit nie było pomieszane). Rozszerzyłem opis pytania. –

Powiązane problemy