Я написал загрузчик около PHPUnit_TextUI_Command
, чтобы можно было запустить серию отдельных наборов тестов, когда я не передаю аргументы phpunit
. Суть начального загрузчика состоит в следующем:
// this->_default_tests is an array of argument sets.
$runner = new \PHPUnit_TextUI_Command;
if (count($_SERVER['argv']) == 0) {
foreach ($this->_default_tests as $test_arguments) {
$result = $runner->run($test_arguments, false);
if ($result == \PHPUnit_TextUI_TestRunner::FAILURE_EXIT) {
exit;
}
}
} else {
$runner->run($_SERVER['argv'], false);
}
Однако при запуске теста по умолчанию у меня возникает серьезная проблема: phpunit
вылетает со следующей ошибкой:
Неустранимая ошибка PHP: не удается объявить класс MyOrganization \ MyPackage \ Tests \ Unit \ Filters \ FilterTest, поскольку имя уже используется в /me/MyOrganization/MyPackage/core/tests/Unit/Filters/FilterTest.php в строке 24
Я дважды проверил FilterTest.php и подтвердил, что объявление пространства имен соответствует ожидаемому пространству имен. На самом деле, этот тест выполняется без проблем, когда я указываю аргументы своему бегуну, таким образом, обходя поведение по умолчанию, которое я пытаюсь реализовать.
PHPUnit определяет собственный класс с именем FilterTest
. Не должно быть никакого конфликта между классами PHPUnits и моими собственными, и фактически, очевидно, нет, когда я указываю аргументы для phpunit
.
Что здесь происходит и как мне это исправить?
Допустимый альтернативный ответ: есть ли способ настроить набор тестов таким образом, чтобы он прекращал работу после первого файла или каталога тестов, которые сообщают об ошибке или сбое? (Это то, что я пытаюсь сделать с помощью загрузчика.)