2015-06-19 4 views
2

У меня есть «тесты Нет казнены» с PHPUnit ..PHPUnit тесты не выполняются

Эта линия работает

$ phpunit install/InstallDbTest.php 
... 
<result expected> 
... 

$ cat suites/installtests.xml 
<phpunit> 
    <testsuites> 
     <testsuite name="database"> 
      <file>install/InstallDbTest.php</file> 
     </testsuite> 
    </testsuites> 
</phpunit> 

$ phpunit -c suites/installtests.xml 
PHPUnit 4.7.4 by Sebastian Bergmann and contributors. 



Time: 130 ms, Memory: 11.25Mb 

No tests executed! 

Кто-нибудь может сказать мне, что я делаю неправильно?

Заранее благодарен!

ответ

5

Необходимо исправить путь в вашем phpunit.xml.

Он пытается найти файл suites/install/InstallDbTest.php. Поскольку файл не существует, тесты не выполняются, и вы получаете сообщение.

Измените конфигурацию на следующее:

<phpunit> 
    <testsuites> 
     <testsuite name="database"> 
      <file>../install/InstallDbTest.php</file> 
     </testsuite> 
    </testsuites> 
</phpunit> 

Пути к файлам в phpunit.xml все относительно местоположения файла XML.

+0

Спасибо Schleis! – nsvir

0

Может быть, в InstallDbTest.php файле вам не хватает:

<?php 
... 
0

Для тех из вас, кто вы используете другой самозагрузки файла, чем файл автозагрузку композитора, убедитесь, что вы не use один из ваших классов тестов.

Действительно, PHPUnit (версия 6.2 в моем случае) добавить к запущенному TestSuite все PHP файлы, для которых не загружен класс еще (посмотреть, как это делается in the code). Из TestSuite::addTestFile($filename) метода:

$classes = get_declared_classes(); 
$filename = Fileloader::checkAndLoad($filename); 
$newClasses = \array_diff(\get_declared_classes(), $classes); 

Так что, если ваш класс уже принадлежат к get_declared_classes он будет проигнорирован.

Резюмируя: не use тестового класса до;)

Смежные вопросы