Мне случилось, что у меня был один дополнительный уровень каталогов в моих пакетах.Вместо MyVendorName\MyBundleNameBundle
у меня было MyVendorName\MyProject\MyBundleNameBundle
Каталоги по умолчанию в phpunit.xml.dist
, в разделе testsuites
:
<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
</testsuite>
</testsuites>
, но ни один из них не соответствовал моему пространству имен пакета:Xmontero\Emperors\AdminBundle
чьи тесты, в свою очередь, находились в каталоге src/Xmontero/Emperors/AdminBundle/Tests
.
Кроме того, ВСЕ мои пакеты имели этот синтаксис, и я удалил все пакеты с другим синтаксисом (например, Acme\DemoBundle
).В результате phpunit
не нашел никакого теста.
Я решил так: чуть ниже этой строки в phpunit.xml.dist
<directory>../src/*/*Bundle/Tests</directory>
Я добавил эту строку
<directory>../src/*/*/*Bundle/Tests</directory>
так что читается:
<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
</testsuite>
</testsuites>
... и все работало нормально;)
- РЕДАКТИРОВАТЬ 1 день спустя -
Это дает мне сейчасотчет о покрытии о самом тесте, при запуске phpunit -c app --coverage-html myNiceDir
- когда я ожидаю, что он даст мне только покрытие тестируемой системы.
Это потому, что существует whitelist
, который следует той же схемеи есть что-то, что нужно добавить в список exclude
:
Где это прочесть:
<exclude>
<directory>../src/*/*Bundle/Resources</directory>
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Resources</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
</exclude>
Я изменился на это:
<exclude>
<directory>../src/*/*Bundle/Resources</directory>
<directory>../src/*/*/*Bundle/Resources</directory>
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Resources</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
</exclude>
Iнадеюсь теперь это правильно;)