2013-08-04 10 views
28

Używam phpunit ze strukturą Laravel 4. Dlaczego w czasie testów występuje błąd PHP? Nie są wyświetlane komunikaty o błędach (np. Brakująca metoda)?Dlaczego phpunit nie pokazuje żadnych błędów w konsoli?

Jak możemy uzyskać phpunit, aby pokazać wszystkie błędy?

enter image description here

+0

Możesz uzyskać wszystkie błędy PHPunit. [Ten] [1] lub [Ten] [2] przyda ci się. [1]: http://stackoverflow.com/questions/3569862/phpunit-errors [2]: http://stackoverflow.com/questions/5994729/phpunit-not-showing-a-stack-trace -for-a-php-fatal-error –

Odpowiedz

23

Myślę, że problem jest prawdopodobnie odnosi się do samego PHP, nie PHPUnit. Wykonaj następujące kroki:

1. Sprawdź poprawność php.ini. Zauważ, że niektóre systemy mogą korzystać z różnych php.ini dla różnych PHP SAPI:

php -i | grep php.ini 
Configuration File (php.ini) Path => /etc/php5/cli 
Loaded Configuration File => /etc/php5/cli/php.ini 

2. Edytuj ustawienia wyjściowe błąd. Ustaw odpowiednie ustawienia dla error_reporting, display_errors, display_startup_errors w odpowiednich php.ini:

error_reporting = E_ALL 
display_errors = On 
display_startup_errors = On 

Jeśli nie chcesz zmieniać CLI błąd raportowania zachowania w zakresie globalnym, można użyć PHPUnit plik bootstrap dla zdefiniowania tych settnigs.

1. Skonfiguruj bootstrap dla PHPUnit. Otwarte /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml plik i dodać atrybut bootstrap do phpunit tagu:

<phpunit bootstrap="bootstrap.php"> 

2. Tworzenie bootstrap.php w folderze z phpunit.xml:

<?php 
ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
ini_set('display_startup_errors', '1'); 
40

Jest to bardzo powszechny problem, zwłaszcza gdy są uruchomione testy na serwerze produkcyjnym lub gdy tester nie jest zbyt świadomy konfiguracji PHP.

Problem jest związany z ustawieniami php.ini, jak wskazał Alexander Yancharuk w swojej odpowiedzi i wszystkie rozwiązania, które sugeruje, działają dobrze.

Ale nie ma innego rozwiązania, które mogą być przydatne, jak to było dla mnie, który ma ustawione odpowiednie ustawienia PHP w pliku konfiguracyjnym PHPUnit (XML) samego, co następuje:

<phpunit> 
    <suites> 
     ... 
    </suites> 
    <php> 
     <ini name="display_errors" value="On" /> 
     <ini name="display_startup_errors" value="On" /> 
    </php> 
</phpunit> 

Używanie tego możesz spersonalizować nie tylko wyświetlanie błędów, ale także wiele konfiguracji PHP, specjalnie dla twojego zestawu testów, pozostawiając nietkniętą konfigurację produkcyjną i bez konieczności pisania pliku bootstrap tylko do tego.

+0

Próbowałem tego, ale to nie działa dla mnie. Zastanawiam się, czy czegoś brakuje. Używam Laravel 5.6 na komputerze Mac z systemem High Sierra. Wersja PHP PHP 7.1.7 i phpunit 7.0.0. Dodałem dwie linie, które pokazałeś w elemencie '' do pliku 'phpunit.xml' dostarczanego z Laravel, ale bez powodzenia. Błędy nadal nie są wyświetlane. Każdy pomysł, dlaczego nie? – flyingL123

Powiązane problemy