Остальные ответы здесь верны. Вы не можете сделать это с помощью конфигурации 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 позаботится о работе. Не забудьте прокомментировать их по группам, чтобы вы знали, как выполнять.
public function testLibrary() {
UnitTest1::testUnit1();
UnitTest2::testUnit2();
FormTest::testForm();
}
public function testForm() {
FormTest::testForm();
}
}
?>
Теперь, чтобы получить желаемую функциональность, просто запустите «config» для нужной группы.
phpunit --group XXX_Form library_config.php
phpunit --group Library library_config.php
Как я уже сказал, это уродливый и, конечно, плохой код, поскольку он требует постоянного обслуживания, но он даст вам функциональность, которую вы ищете.
Надеюсь, Бергманн добавит эту функцию в свой следующий раунд, хотя это маловероятно, поскольку он, похоже, в значительной степени игнорирует ее .