Tak więc za każdym razem, gdy napotykam nieoczekiwane wyjątki w PHPUnit (np. Nie można wstawić do db ze względu na kontrolę integralności) moje testy kończą się niepowodzeniem i są błędne bez uruchamiania Funkcja tearDownAfterClass()
. Spowoduje to, że moja baza danych stanie się nieczytelna, więc muszę ręcznie ją wyczyścić. Czy istnieje sposób, aby zapewnić, że tearDownAfterClass()
jest zawsze wykonywany?w PHPUnit jak zmusić tearDownAfterClass() do uruchomienia w przypadku nieoczekiwanych wyjątków
Odpowiedz
PHPUnit wezwie tearDownAfterClass
nawet gdy istnieją błędy i niepowodzenia w metodach badawczych. Będzie to , a nie wywoływać, gdy setUpBeforeClass
zgłasza wyjątek. Aby upewnić się, że baza danych została wyczyszczona, przenieś kod oczyszczający do nowej metody, którą wywołujesz z tearDownAfterClass
i klauzuli catch w setUpBeforeClass
.
function FooTest extends PHPUnit_Framework_TestCase
{
static function setUpBeforeClass() {
try {
... setup code that might fail ...
}
catch (Exception $e) {
self::cleanupDatabase();
throw $e; // so the tests will be skipped
}
}
static function tearDownAfterClass() {
self::cleanupDatabase();
}
static function cleanupDatabase() {
... clean ...
}
... test methods ...
}
Można zastąpić funkcję
protected function onNotSuccessfulTest(Exception $e)
z na przykład;
$this->tearDownAfterClass();
throw $e;
** Uwaga: ** Będzie to wywoływać 'tearDownAfterClass' dla każdej metody testowej, która ulegnie awarii lub błędom - ani razu na końcu dla całej klasy. –
-1 To również nie rozwiązuje problemu, ponieważ 'onNotSuccessfulTest' nie jest wywoływany, gdy' setUpBeforeClass' zgłasza wyjątek. –
- 1. Jak zmusić Iframe do uruchomienia dziwactw w standardowej ramce rodzica
- 2. Polecenie uruchomienia w przypadku uruchamiania konsoli Rails
- 3. PHPUnit nie przechwytuje oczekiwanych wyjątków
- 4. Jak testować wiele wyjątków za pomocą PHPUnit?
- 5. Jak zmusić program do uruchomienia pierwszej iteracji pętli while?
- 6. Błąd podczas próby uruchomienia PHPUnit z PhpStorm
- 7. Czy istnieje sposób na zmusić Core Animation do uruchomienia wątku?
- 8. Wybierz wszystkie elementy pasujące w PHPUnit Selen przypadku 2 testowym
- 9. Jak zmusić JTable do NIE odwracania tekstu w przypadku, gdy zawiera on znaki arabskie?
- 10. Błąd PHPUnit w Symfony2
- 11. Dopasowywanie wielu typów wyjątków do tego samego przypadku
- 12. Jak złapać PHP Ostrzeżenie w PHPUnit
- 13. Dodaj stałą do makiety w PHPUnit
- 14. Jak mogę zmusić mokka do prowadzenia testów w odosobnieniu?
- 15. echo w testach phpunit
- 16. Propagowanie wyjątków w wątkach?
- 17. Jak zmusić QtCreator do załadowania pliku pro.user?
- 18. Jak zmusić liczbę całkowitą do typu wyliczenia w PowerShell?
- 19. Jak zmusić klienta AmazonSQSBufferedAsyncClient do opróżnienia wiadomości?
- 20. Globalne stałe w PHPUnit
- 21. Czy jest inny sposób uruchomienia aplikacji Wiadomości w systemie iOS? (w przypadku darowizn)
- 22. Jak uzyskać ścieżkę do uruchomienia programu java
- 23. Skrót do uruchomienia programu w SAS?
- 24. Obsługa wyjątków w rozszerzeniach Chrome
- 25. Jak zmusić Task.Factory.StartNew do wątku tła?
- 26. sortowanie C: wymiany wskazówek prowadzi do nieoczekiwanych wyników
- 27. Program debugujący nie łamie/nie zatrzymuje się w przypadku wyjątków w metodzie asynchronicznej
- 28. Czy mogę zmusić MSTest do użycia nowego procesu dla każdego uruchomienia testowego?
- 29. Czy mogę zmusić moją aplikację do uruchomienia domyślnej kamery zamiast oferowania listy "Pełna operacja przy użyciu"?
- 30. Maskowanie wyjątków w Delphi
Dziękujemy! właśnie tego szukałem! –