почему PHPUnit пытается найти файл с именем testsuite? - PullRequest
7 голосов
/ 13 августа 2011

У меня есть это в моем файле 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 работает без ошибок.Что с этим?

Ответы [ 2 ]

5 голосов
/ 13 августа 2011

По умолчанию PHPUnit добавит «все *Test классы, найденные в *Test.php файлах» (см. PHPUnit docs ). Если он не находит никаких файлов, соответствующих этому описанию (например, файл SomeTest.php, определяющий класс SomeTest), он возвращается к поиску файла на основе атрибута name набора тестов.

Решение состоит в том, чтобы создать файл, соответствующий этому описанию, чтобы PHPUnit не использовал поиск по умолчанию по имени testsuite:

<?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 сможет найти подходящие тестовые случаи для запуска под этими другими наборами. Если он находит тесты для выполнения в любом тестовом комплекте, он не прибегает к поиску по атрибуту name наборов, для которых он ничего не может найти.

1 голос
/ 13 августа 2011

Я считаю, что проблема в том, что вы не говорите, какие файлы содержат тестовые наборы и / или наборы, которые вы хотите запустить.Попробуйте добавить атрибут suffix="Test.php".

<testsuite name="MyTests">
    <directory suffix="Test.php">../path/to/some/tests</directory>
</testsuite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...