Это могло бы быть глупым вопросом, но я, может казаться, не добираюсь до работы.
Я использую PHPUnit для тестирования. В настоящее время у меня есть два класса в файле по имени Tests.php:
class XTest extends PHPUnit_Framework_TestCase {...}
class YTest extends PHPUnit_Framework_TestCase {...}
Однако я не могу выполнить оба класса. Я выполняю следующую команду в Windows:
php "C:\Program Files (x86)\PHP\phpunit" Tests
И это пытается выполнить тестовый класс под названием "Тесты". Вместо этого я хотел бы, чтобы это выполнило "XTest" и "YTest" и все, что находится на файле. Как я мог выполнить несколько тестовых классов легко?
PHPUnit Docs объясняет аргументы, которые ожидает запуск теста из командной строки.
В вашем случае вы предоставляете Tests
, что означает, что PHPUnit ищет класс Tests
в файле Tests. php
.
С этим знанием легко понять, что лучшим способом организации тестов будет написание одного тестового класса в каждом файле, с именами файлов равными TestClassName. php
.
Однако, если по каким-то причинам вы не хотите этого делать, вы можете предоставить дополнительный аргумент, чтобы сообщить тестовому бегуну, в каком файле объявлен класс теста:
php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php
Помещение всех ваших тестов в одну директорию и обращение к PHPUnit с просьбой обойти их рекурсивно сработает, но если ваши тесты находятся в разных директориях или вы хотите запустить только определенные части определенных классов тестов, то @групповая аннотация может быть тем, что вы ищете.
Когда вы выполняете свои тесты, вы можете использовать php "C": \Program Файлы (x86)\PHP\phpunit" - группа
и PHPUnit выполнит только те те те тесты, которые имеют @group insert_name_of_group_to_which_xtests_and_ytests_belong
в своем PHPDoc.