PHPUnit – «Никаких тестов не выполняется» при использовании файла конфигурации

Проблема

Чтобы улучшить качество кода, я решил попробовать узнать, как тестировать мой код с помощью Unit Testing вместо моих посредственных лучших решений для тестирования.

Я решил установить PHPUnit с помощью композитора для личной библиотеки, что позволяет мне выполнять общие функции базы данных. Сначала у меня не было файла конфигурации для PHPUnit, и когда я запускал команды вроде:

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest 

Обратите внимание, что это команда терминала, поэтому я не включил расширение .php . Вышеупомянутый GeneralStringFunctionsTest.php фактически является файлом GeneralStringFunctionsTest.php .

Результат – то, что я ожидал:

Время: 31 мс, Память: 2.75Mb

OK (1 тест, 1 утверждение)

Затем я попытался использовать файл конфигурации, чтобы автоматически загружать тестовый пакет вместо того, чтобы каждый раз вручную вводить файл. Я создал файл phpunit.xml в корневом каталоге и ввел в файл следующее: http://pastebin.com/0j0L4WBD :

 <?xml version = "1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>tests</directory> </testsuite> </testsuites> </phpunit> во <?xml version = "1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>tests</directory> </testsuite> </testsuites> </phpunit> во <?xml version = "1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>tests</directory> </testsuite> </testsuites> </phpunit> 

Теперь, когда я запускаю команду:

 phpunit 

Я получаю следующий вывод:

PHPUnit 4.5.0 от Себастьяна Бергмана и авторов.

Конфигурация читается из /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml

Время: 16 мс, Память: 1,50 Мб

Никаких тестов не выполнено!

В случае, если это полезно, моя структура каталогов выглядит следующим образом:
src – Каталог верхнего уровня (со всем моим исходным кодом)
tests – Каталог верхнего уровня (со всеми моими тестами, структурированными так же, как и моя папка src )
поставщик – сторонние файлы композитора

У меня также есть композитор json и файл блокировки, а также файл phpunit xml на верхнем уровне в виде файлов.

Вещи, которые я пробовал

  • Изменение каталога в phpunit.xml на tests/GeneralStringFunctions
  • Изменение каталога в phpunit.xml на ./tests
  • Перемещение файла phpunit.xml в каталог tests а затем изменение каталога, которое должно быть ./ вместо tests .
  • Добавление атрибута суффикса в тег каталога в phpunit.xml чтобы указать «Тесты» как явный суффикс.

Solutions Collecting From Web of "PHPUnit – «Никаких тестов не выполняется» при использовании файла конфигурации"

Для чего это стоит (опаздываю), я столкнулся с этим недавно, когда я создавал новый проект Laravel 5.1 для простого веб-сайта. Я попытался отладить его и смутился, когда попытался:

 php artisan make:test homeTest 

(который имеет тест по умолчанию, который только утверждает true)

и увидел выход

 No tests executed! 

Проблема, с которой я столкнулась, была связана с моей установкой PHP – «phpunit» был глобально зарегистрирован и настроен по-разному, тогда как phpunit, который поставлялся с установкой Laravel, был настроен правильно и отлично работал.

Таким образом, исправление запускает настроенный phpunit поставщика (из того же корневого каталога, что и приложение / и тесты /):

 ./vendor/bin/phpunit 

Надеюсь, это поможет кому-то еще!

Ваш XML-файл в порядке. Тем не менее, вы должны убедиться, что файлы PHP в ваших tests/ папках называются следующим образом:

tests / Test.php <— Обратите внимание на верхний регистр "T"
тесты / пользователь Test.php
тесты / fooBar Test.php
и т.п.

Имена файлов должны заканчиваться на «Test.php» . Это то, что ищет PHPUnit внутри каталогов.

Кроме того, каждый метод тестирования должен иметь имя, которое начинается с «теста»:

 public function testFooBar() { // Your test code } 

Надеюсь, это поможет!

У меня была такая же проблема после PHPUnit на наших виртуальных машинах, обновленных до версии 6. Даже –debug и –verbose ничего не сказали полезными, просто «никаких тестов не выполнено». В конце концов выяснилось, что классы и пространства имен были изменены в новой версии, и он просто не хотел выполнять файлы, содержащие ссылки на старые классы. Исправление для меня было просто заменить в каждом случае:

 class MyTestCase extends \PHPUnit_Framework_TestCase {...} 

с:

 use PHPUnit\Framework\TestCase; class MyTestCase extends TestCase {...} 

Я понимаю, что это очень старо, но это случилось со мной. Надеюсь, это поможет кому-то.

Моя проблема заключалась в том, что я забыл символ «@» в / ** @test * /

НЕПРАВИЛЬНО:

 /** test */ function a_thread_can_be_deleted() { ... } 

ПРАВИЛЬНО:

 /** @test */ function a_thread_can_be_deleted() { ... } 

Вы добавили тестовый набор в файл phpunit.xml?

 <phpunit> <testsuite name="app1" > <directory>./</directory> </testsuite> </phpunit> 

Вы можете добавить несколько каталогов.

Для меня, используя phpunit –debug, я показал, какой тест он не выполнял, внутри, у меня было

 $this->visit('/') ->see('Laravel'); 

и я думаю, потому что каталог был защищен аутентификацией .htaccess, он не смог пройти, чтобы посетить страницу

Решение для меня состояло в том, чтобы вынуть этот тест (или, скорее всего, вывести аутентификацию .htaccess)

Вы должны написать абсолютный путь!

  <directory>/absolute/path/to/tests</directory> 

С уважением.

используя консоль cmd, разрешили эту проблему, передав протестированный путь.

Я не нашел другого способа сделать это. Это не работает.

Я надеюсь, что это было полезно для кого-то