как я могу выбрать конкретный набор тестов для выполнения?
$ 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>
Ответы:
Вот код, как если бы PHPUnit 3.7.13
$ phpunit --configuration config.xml --testsuite Library $ phpunit --configuration config.xml --testsuite XXX_Form
Если вы хотите запустить группу тестовых наборов, вы можете сделать это
<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>
потом
$ phpunit --configuration config.xml --testsuite Both
К сожалению, PHPUnit в настоящее время не поддерживает такие вложенные тесты.
<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>
Поэтому, если вы хотите запускать группы тестовых наборов таким образом, вам необходимо дублировать конфигурацию xml!
источник
Это невозможно в текущих версиях PHPUnit, о чем свидетельствуют эти сообщения в списке рассылки phpunit-user: http://thread.gmane.org/gmane.comp.php.phpunit.user/1302
Но есть альтернатива, вы можете просто передать путь к phpunit.
phpunit library/XXX
Это запустит все тесты в каталоге library / XXX
Если для вас этого недостаточно, другой вариант - использовать аннотацию @group для разделения тестов на разные категории, которые затем можно запускать выборочно.
источник
Начиная с phpunit 6.1, вы можете использовать атрибут в конфигурационном XML-файле
defaultTestSuite
, это похоже на использование параметра по умолчаниюphpunit --testsuite xxx
и переопределяется.источник
Другой вариант - создать отдельный файл конфигурации для каждого набора тестов, который вы хотите протестировать отдельно. Есть некоторые накладные расходы, поскольку вам, возможно, придется скопировать / вставить повторяющиеся настройки, но затем вы можете указать каждый файл конфигурации по мере необходимости.
источник
Остальные ответы здесь верны. Вы не можете сделать это с помощью конфигурации xml, но вы можете сделать такой же тип конфигурации в php.
Это, конечно, не самая красивая вещь, но она должна дать вам необходимую функциональность.
Вы предоставили конфигурацию 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>
Гипотетически предположим, что ваша директория «библиотека» содержит 3 файла:
library XXX FormTest.php Unit unittest1.php unittest2.php
И что каждый из файлов содержит 1 тест согласно идеальному соглашению об именах, например: FormTest содержит testForm ()
Для конфига мы создадим конфиг, содержащий все:
<?php include_once "library/XXX/FormTest.php"; include_once "library/Unit/unittest1.php"; include_once "library/Unit/unittest2.php";
Затем мы создадим класс в соответствии с соглашением об именах phpunit. Вы можете называть его как хотите, мы никогда не будем его использовать ...
class LibraryConfigTest extends PHPUnit_Framework_TestCase {
Каждый «набор тестов» будет просто методом, запускающим нужные вам тесты. Назовите методы как хотите, потому что мы никогда не будем их использовать. Phpunit позаботится о работе. Не забудьте прокомментировать их по группам, чтобы вы знали, как выполнять.
/** * 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(); } } ?>
Теперь, чтобы получить желаемую функциональность, просто запустите «config» для нужной группы.
phpunit --group XXX_Form library_config.php phpunit --group Library library_config.php
Как я уже сказал, это уродливый и, конечно, плохой код, поскольку он требует постоянного обслуживания, но он даст вам функциональность, которую вы ищете.
Надеюсь, Бергманн добавит эту функцию в свой следующий раунд, хотя это маловероятно, поскольку он, похоже, в значительной степени игнорирует ее .
источник