Używam phpunita w połączeniu z jenkinsem i chcę pominąć niektóre testy, ustawiając konfigurację w pliku XML phpunit.xml
Wiem, że mogę użyć w linii poleceń:
phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest
jak przetłumaczyć to na plik XML, skoro <filters>
tag służy tylko do pokrycia kodu?
Chciałbym przeprowadzić wszystkie testy oprócz testStuffThatAlwaysBreaks
<exclude>
-Odpowiedzi:
Najszybszym i najłatwiejszym sposobem pominięcia testów, które są uszkodzone lub musisz kontynuować pracę później, jest po prostu dodanie następujących elementów na początku indywidualnego testu jednostkowego:
$this->markTestSkipped('must be revisited.');
źródło
static::markTestSkipped('');
zamiast$this->
. W nowszych wersjach PHP wygeneruje ostrzeżenie. Podpis:public static function markTestSkipped($message = '')
$this->markTestSkipped()
markTestSkipped()
jest nadal metodą statyczną.Jeśli możesz sobie poradzić z ignorowaniem całego pliku to
<?xml version="1.0" encoding="UTF-8"?> <phpunit> <testsuites> <testsuite name="foo"> <directory>./tests/</directory> <exclude>./tests/path/to/excluded/test.php</exclude> ^------------- </testsuite> </testsuites> </phpunit>
źródło
<exclude>
i 893 testy z<exclude>
....... 63 / 893 ( 7%)
@group
adnotacji i testów dzielonych ze swej naturyCzasami przydatne jest pominięcie wszystkich testów z określonego pliku w oparciu o niestandardowe warunki zdefiniowane jako kod php. Możesz to łatwo zrobić za pomocą funkcji setUp, w której działa również makeTestSkipped.
protected function setUp() { if (your_custom_condition) { $this->markTestSkipped('all tests in this file are invactive for this server configuration!'); } }
your_custom_condition może być przekazane przez jakąś statyczną metodę / właściwość klasy, stałą zdefiniowaną w pliku bootstrap phpunita lub nawet zmienną globalną.
źródło
Config
klasa? Gdzie to umieścić?