PHPUnit TestSuite Исключить
поэтому я хотел бы исключить directoy из моего Testsuite так же, как это:
<testsuite name="PHPUnitWillKillMe">
<directory>src/*/Bundle/*/*Bundle/Tests</directory>
<exclude>src/*/Bundle/*/*Bundle/Tests/Controller/</exclude>
</testsuite>
все, кроме контроллеров, должно быть протестировано.
дело в том, что он не работает. PHPUnit по-прежнему выполняет все тесты в src//Bundle//*Bundle / Tests / Controller / когда я запускаю
phpunit --testsuite PHPUnitWillKillMe
есть идеи?
С Наилучшими Пожеланиями!
версия PHPUnit, которую я тестировал, была 3.7.21 и 3.7.28.
2 ответов
я протестировал его на своем демо-проекте Symfony (Bundles
предполагает, что это то, что вы используете), и у меня такая же проблема. Кажется, это сочетание двух проблем. Во-первых, есть известная ошибка с запуском PHPUnit (PHPUnit 3.7.19) с -c
или :
https://github.com/sebastianbergmann/phpunit/issues/928
при запуске в другом месте и указании файла конфигурации с помощью --config исключение будет однако перестаньте работать.
во-вторых,exclude
директива, похоже, игнорирует / терпит неудачу, когда есть какой-либо глоббинг (*
) в пути, поэтому, удалив глобус, он работал для меня:
<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
<exclude>../src/Blah/MyBundle/Tests/Controller/</exclude>
</testsuite>
</testsuites>
это только способ, который я нашел, чтобы исключить тесты в MyBundle
по мере необходимости. Шар сделал не работы на exclude
. Но тогда это означает, что вы должны добавить как можно больше exclude
директивы как есть папки, которые вы хотите игнорировать.
вероятная связанная проблема gihub: https://github.com/sebastianbergmann/phpunit/pull/573
[...] это исправление попадает в выпуск 4.0, поскольку оно нарушает обратную совместимость.
- Решение #1: удалите любые глобусы в ваших путях
- решение #2: обновление до PHPUnit v4.* (не проверено самостоятельно, см. комментарии, не решает проблему
exclude
пути подстановка)
просто была аналогичная проблема, phpunit имеет довольно хорошую поддержку для групп:
...
--filter <pattern> Filter which tests to run.
--group ... Only runs tests from the specified group(s).
--exclude-group ... Exclude tests from the specified group(s).
--list-groups List available test groups.
...
что вы делаете это
/**
* @group nonRunnableGroupName
*/
public function testSomething()
{ /* test here */ }
и как
$ phpunit -c /src --exclude-group nonRunnableGroupName