Другие ответы здесь верны.Вы не можете сделать это, используя конфигурацию 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
Как я уже сказал, это некрасивый и, конечно, не очень хороший код, поскольку он требует постоянного обслуживания, но он даст вам необходимую функциональность.
Надеюсь, Бергманн добавит эту функциональность в свойследующий раунд, хотя это маловероятно, так как он, кажется, в значительной степени игнорирует его .