jak wybrać konkretny pakiet testowy do wykonania?
$ phpunit --configuration config.xml
config.xml:
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
Odpowiedzi:
Oto kod, jakby PHPUnit 3.7.13
$ phpunit --configuration config.xml --testsuite Library $ phpunit --configuration config.xml --testsuite XXX_Form
Jeśli chcesz uruchomić grupę zestawów testów, możesz to zrobić
<testsuites> <testsuite name="Library"> <directory>library</directory> </testsuite> <testsuite name="XXX_Form"> <file>library/XXX/FormTest.php</file> <directory>library/XXX/Form</directory> </testsuite> <testsuite name="Both"> <directory>library</directory> <file>library/XXX/FormTest.php</file> <directory>library/XXX/Form</directory> </testsuite> </testsuites>
Następnie
$ phpunit --configuration config.xml --testsuite Both
Niestety PHPUnit obecnie nie obsługuje zagnieżdżonych zestawów testowych, takich jak ten
<testsuites> <testsuite name="Both"> <testsuite name="Library"> <directory>library</directory> </testsuite> <testsuite name="XXX_Form"> <file>library/XXX/FormTest.php</file> <directory>library/XXX/Form</directory> </testsuite> </testsuite> </testsuites>
Więc jeśli chcesz uruchomić grupy zestawów testów w ten sposób, musisz mieć zduplikowaną konfigurację xml!
źródło
Nie jest to możliwe w obecnych wersjach PHPUnit, o czym świadczą te wiadomości na liście mailingowej phpunit-user: http://thread.gmane.org/gmane.comp.php.phpunit.user/1302
Ale jest alternatywa, możesz po prostu przekazać ścieżkę do phpunita.
phpunit library/XXX
Spowoduje to uruchomienie wszystkich testów w katalogu library / XXX
Jeśli to nie wystarczy, inną opcją jest użycie adnotacji @group w celu podzielenia testów na różne kategorie, które można następnie przeprowadzić selektywnie.
źródło
Od phpunit 6.1 możesz użyć atrybutu w pliku konfiguracyjnym xml
defaultTestSuite
, jest to jak użycie domyślnej opcjiphpunit --testsuite xxx
i jest nadpisane.źródło
Inną opcją jest utworzenie osobnego pliku konfiguracyjnego dla każdego zestawu testowego, który chcesz osobno przetestować. Jest pewien narzut, ponieważ być może będziesz musiał skopiować / wkleić zduplikowane ustawienia, ale możesz wtedy określić każdy plik konfiguracyjny w razie potrzeby.
źródło
Pozostałe odpowiedzi są poprawne. Nie możesz tego zrobić za pomocą konfiguracji xml, ale możesz zrobić ten sam typ konfiguracji w php.
Z pewnością nie jest to najładniejsza rzecz, ale powinna zapewniać funkcjonalność, której potrzebujesz.
Podałeś plik config
<testsuites> <testsuite name="Library"> <directory>library</directory> </testsuite> <testsuite name="XXX_Form"> <file>library/XXX/FormTest.php</file> <directory>library/XXX/Form</directory> </testsuite> </testsuites>
Hipotetycznie załóżmy, że Twój katalog „biblioteka” zawiera 3 pliki:
library XXX FormTest.php Unit unittest1.php unittest2.php
I że każdy z plików zawiera 1 test według doskonałej konwencji nazewnictwa, np .: FormTest zawiera testForm ()
Dla konfiguracji stworzymy konfigurację zawierającą wszystko:
<?php include_once "library/XXX/FormTest.php"; include_once "library/Unit/unittest1.php"; include_once "library/Unit/unittest2.php";
Następnie utworzymy klasę zgodnie z konwencjami nazewnictwa phpunit. Możesz nazwać to, co chcesz, ponieważ nigdy go nie użyjemy ...
class LibraryConfigTest extends PHPUnit_Framework_TestCase {
Każdy „zestaw testów” będzie po prostu metodą, która uruchamia wymagane testy. Nazwij metody, jak chcesz, ponieważ po raz kolejny nigdy ich nie użyjemy. Phpunit zajmie się uruchomieniem. Pamiętaj jednak, aby skomentować je w grupach, aby wiedzieć, jak wykonać.
/** * All Tests in Library * @group Library **/ public function testLibrary() { UnitTest1::testUnit1(); UnitTest2::testUnit2(); FormTest::testForm(); } /** * All Form tests in library/XXX * @group XXX_Form **/ public function testForm() { FormTest::testForm(); } } ?>
Teraz, aby uzyskać żądaną funkcjonalność, wystarczy uruchomić „config” dla wybranej grupy.
phpunit --group XXX_Form library_config.php phpunit --group Library library_config.php
Jak powiedziałem, jest to brzydki i na pewno nie dobry kod, ponieważ będzie wymagał ciągłej konserwacji, ale zapewni funkcjonalność, której szukasz.
Miejmy nadzieję, że Bergmann doda tę funkcję w swojej następnej rundzie, chociaż nie wydaje się to prawdopodobne, ponieważ wydaje się, że prawie ją ignoruje .
źródło