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