Я testSaveAndDrop
запустить один метод тестирования с именем testSaveAndDrop
в escalation/EscalationGroupTest.php
файлов escalation/EscalationGroupTest.php
с помощью phpunit
. Я попробовал следующие комбинации:
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop
В каждом случае выполняется весь тестовый метод в escalation/EscalationGroupTest.php
файла escalation/EscalationGroupTest.php
. Как выбрать только ОДИН метод?
Имя класса – EscalationGroupTest
а версия phpunit
– 3.2.8.
Следующая команда запускает тест по одному методу:
phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php phpunit --filter methodName ClassName path/to/file.php
Я предпочитаю маркировать тест в аннотации как
/** * @group failing * Tests the api edit form */ public function testEditAction()
Затем запустите его с помощью
phpunit --group failing
Не нужно указывать полный путь в командной строке, но вы должны помнить об удалении этого параметра перед фиксацией, а не загромождать код.
Вы можете также указать несколько групп для одного теста
/** * @group failing * @group bug2204 */ public function testSomethingElse() { }
Вот более общий ответ:
Если вы уверены, что имя метода уникально, вы можете фильтровать только по имени метода (это работает для меня)
phpunit --filter {TestMethodName}
Однако более безопасно указывать путь / ссылку на файл
phpunit --filter {TestMethodName} {FilePath}
Пример:
phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php
Быстрое замечание: я заметил, что если у меня есть функция с именем testSave
а другая функция с именем testSaveAndDrop
с помощью команды phpunit --filter testSave
также запускает testSaveAndDrop
и любую другую функцию, которая начинается с testSave*
, это странно!
Следующая команда будет выполнять точно тест testSaveAndDrop
.
phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php
Итак, что-то вроде этого
phpunit --filter 'EscalationGroupTest::testSaveAndDrop' EscalationGroupTest escalation/EscalationGroupTest.php
Без =
и с '
Если вы находитесь в netbeans, вы можете щелкнуть правой кнопкой мыши в методе тестирования и нажать «Запустить сконфигурированный метод тестирования».
Причина, по которой все ваши тесты запущены, заключается в том, что у вас есть флаг --filter
после имени файла. PHPUnit не читает параметры вообще, и поэтому запускает все тестовые примеры.
На экране справки:
Usage: phpunit [options] UnitTest [UnitTest.php] phpunit [options] <directory>
Поэтому переместите аргумент --filter
перед тестовым файлом, который вы хотите, как указано в ответах @Alex и @Ferid Mövsümov. И у вас должен быть только те тесты, которые вы хотите запустить.
Если вы используете файл конфигурации XML, вы можете добавить следующее в тег phpunit
:
<groups> <include> <group>nameToInclude</group> </include> <exclude> <group>nameToExclude</group> </exclude> </groups>
См. https://phpunit.de/manual/current/en/appendixes.configuration.html.