У меня это в файле phpunit.xml:
<phpunit ...> <testsuites> <testsuite name="MyTests"> <directory>../path/to/some/tests</directory> </testsuite> </testsuites> ... // more settings for <filter> and <logging> </phpunit>
И когда я иду запустить его, я получаю эту ошибку:
PHP fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "MyTests.php" nor "MyTests.php" could be opened.'
Почему PHPUnit дает мне эту ошибку и почему она ищет «MyTests.php», если я дал ей каталог для поиска тестов?
И в связанной заметке, когда я добавляю больше записей <testsuite>
с другими тестами, PHPUnit работает без ошибок. Что с этим?
По умолчанию PHPUnit добавит «все *Test
классы, которые находятся в *Test.php
файлах *Test.php
» (см. Документы PHPUnit ). Если он не находит файлы, соответствующие этому описанию (например, файл SomeTest.php
определяющий класс SomeTest
), он возвращается к SomeTest
файла на основе атрибута имени набора тестов.
Решение состоит в том, чтобы создать файл, соответствующий этому описанию, чтобы PHPUnit не возвращался к по умолчанию поиска по имени testuite:
<?php // in ../path/to/some/tests/SomeTest.php: class SomeTest extends PHPUnit_Framework_TestCase { public function test() { //... test cases here } } ?>
Теперь вы можете запустить phpunit
без ошибок:
$ phpunit PHPUnit 3.5.14 by Sebastian Bergmann. . Time: 0 seconds, Memory: 10.75Mb OK (1 test, 0 assertions)
Он будет работать без ошибок, если вы добавите дополнительные записи testsuite
если PHPUnit сможет найти соответствующие тестовые примеры для запуска в этих других наборах. Если он найдет тесты для запуска в любом тесте testuite, он не прибегнет к поиску по атрибуту name
для наборов, для которых он ничего не может найти.
Я считаю, что проблема заключается в том, что вы не говорите, какие файлы содержат тестовые примеры и / или сюиты, которые вы хотите запустить. Попробуйте добавить атрибут suffix="Test.php"
.
<testsuite name="MyTests"> <directory suffix="Test.php">../path/to/some/tests</directory> </testsuite>