Я изо всех сил пытаюсь запустить один метод испытаний, названный testSaveAndDrop
в файле 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
выполняются. Как выбрать только один метод вместо?
Название класса EscalationGroupTest
и версия phpunit
3.2.8.
Ответы:
Следующая команда запускает тест для одного метода:
Для более новых версий phpunit это просто:
источник
phpunit --filter methodName path/to/testing/file
нетClassName
.Я предпочитаю отмечать тест в аннотации как
Затем запустить его с
Не нужно указывать полный путь в командной строке, но вы должны помнить об удалении этого перед фиксацией, чтобы не загромождать код.
Вы также можете указать несколько групп для одного теста
источник
@group failing, Integration
<phpunit>
: <groups> <include> <group> failing </ group > </ include> </ groups>@depends
от другого, нет НИКАКОГО теста, поэтому вам нужно точно определить все взаимосвязанные тесты и, таким образом, использовать@group
аннотацию.Вот более общий ответ:
Если вы уверены, что имя метода уникально, вы можете фильтровать только по имени метода (это работает для меня)
Однако безопаснее указать путь к файлу / ссылку
Пример:
Краткое замечание: я заметил, что если у меня есть функция с именем,
testSave
и другая функция, названнаяtestSaveAndDrop
с помощью командыphpunit --filter testSave
, также будет запускатьсяtestSaveAndDrop
и любая другая функция, которая начинается сtestSave*
, это странно!источник
/testSave$/
Следующая команда выполнит именно
testSaveAndDrop
тест.источник
\b
вместо того , чтобы,$
наконец , сделал трюк:--filter '/::testSaveAndDrop\b/'
.'/::testSaveAndDrop\b/'
и'/::testSaveAndDrop$/'
работали для меня, как этоphpunit --filter ClassName::methodName$
иphpunit --filter ClassName::methodName\b
(на Linux)для запуска теста phpunit в laravel многими способами ..
для теста одного класса:
для теста одиночным методом:
для запуска тестов из всех классов в пространстве имен:
для более подробного теста запуска см. больше
источник
Итак, как то так
Без
=
и с'
https://phpunit.de/manual/3.7/en/textui.html
источник
EscalationGroupTest
проходят обработку.--filter
перед именем файла, и все должно работать правильно.No tests executed!
на PHPUnit4.8.35
@Schleis Как именно вы изменили команду?Пример с именем пользовательского метода.
Пример с тестовым ключевым словом
источник
Если вы находитесь в NetBeans, вы можете щелкнуть правой кнопкой мыши в методе тестирования и выбрать «Запустить Focused Test Method».
источник
Вы можете попробовать это, я могу запустить отдельные тестовые случаи
Например:
Если вы хотите запускать отдельные тестовые случаи в Laravel 5.5, попробуйте
Например:
источник
Все ваши тесты выполняются потому, что у вас есть
--filter
флаг после имени файла. PHPUnit вообще не читает параметры и выполняет все контрольные примеры.С экрана справки:
Так что переместите
--filter
аргумент перед желаемым тестовым файлом, как указано в ответах @Alex и @Ferid Mövsümov. И у вас должен быть только тот тест, который вы хотите запустить.источник
--filter
опция была после имени файла. Два других ответа имели правильный ответ, но не указывали, почему применялся фильтр.Если вы используете файл конфигурации XML, вы можете добавить в
phpunit
тег следующее:См. Https://phpunit.de/manual/current/en/appendixes.configuration.html.
источник
Я опаздываю на вечеринку, хотя. Но как личное я ненавижу писать всю строку.
Вместо этого я использую следующие ярлыки в файле .bash_profile, чтобы убедиться, что источник .bash_profile является источником после добавления любого нового псевдонима, иначе он не будет работать.
Использование:
Если вы используете Visual Studio Code, вы можете использовать следующий пакет, чтобы сделать ваши тесты быстрыми.
Затем вы можете установить связывание клавиш в настройках. Я использую Command + T привязки в моем MAC.
Теперь, когда вы поместите курсор на любую функцию и затем используете привязку клавиш, он автоматически запустит этот единственный тест.
Если вам нужно запустить весь класс, поместите курсор поверх класса и затем используйте привязку клавиш.
Если у вас есть какие-то другие вещи, то всегда твик с Терминалом
Удачного кодирования!
источник
Вы должны использовать --filter для запуска одного метода тестирования
php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
Приведенный выше фильтр будет запускать testMethod в одиночку.
источник