С PHPUnit-нет тестов, выполненных при использовании файла конфигурации
Проблема
чтобы улучшить качество кода,я решил попробовать научиться тестировать свой код с помощью модульного тестирования вместо моих посредственных решений для тестирования.
я решил установить PHPUnit с помощью composer для личной библиотеки, которая позволяет мне достичь общих функций базы данных. Сначала у меня не было файла конфигурации для PHPUnit, и когда я запускал такие команды, как:
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
обратите внимание, что это команда терминала, поэтому я не включил .
выход-это то, что я ожидал:
время: 31 МС, память: 2,75 Мб
ок (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>
теперь, когда я запускаю команду:
phpunit
я получаю следующий вывод:
PHPUnit 4.5.0 Себастьяна Бергмана и участников.
Чтение конфигурации из /Users/muyiwa/Projects/DatabaseHelper / phpunit.xml
время: 16 мс память: 1,50 Мб
никаких тестов казнен!
в случае, если это полезно, моя структура каталогов выглядит следующим образом:
src-каталог верхнего уровня (со всем моим исходным кодом)
тесты-каталог верхнего уровня (со всеми моими тестами, структурированными так же, как мой src)
поставщик-композитор сторонних файлов
у меня также есть файл composer json и lock, а также файл phpunit xml на верхнем уровне в виде файлов.
вещи, которые у меня есть Пробовал
- изменение каталога в
phpunit.xml
доtests/GeneralStringFunctions
- изменение каталога в
phpunit.xml
до./tests
- перемещение до
tests
каталог, а затем изменить каталог, чтобы быть./
вместоtests
. - добавление атрибута суффикса к тегу каталога в
phpunit.xml
чтобы указать "тесты" в качестве явного суффикса.
14 ответов:
для чего это стоит (опаздывая), я столкнулся с этим недавно, когда я делал новый проект Laravel 5.1 для простого веб-сайта. Я попытался отладить его и был смущен, когда я попытался:
php artisan make:test homeTest
(который имеет тест по умолчанию, который просто утверждает, что true-это true)
и увидел выход
No tests executed!
то, что проблема оказалась для меня, было связано с моей установкой PHP - "phpunit" был глобально зарегистрирован и настроен по-разному, тогда как phpunit, который пришел с установкой Laravel был настроен правильно и работал отлично.
таким образом, исправление запускает настроенный PHPUnit поставщика (из того же корневого каталога, что и приложение / и тесты/):
./vendor/bin/phpunit
надеюсь, что это поможет кому-то еще!
ваш XML-файл в порядке, как это. Однако, вы должны убедиться, что php файлы в папке
tests/
папки называются следующим образом:тесты/
у меня была такая же проблема после PHPUnit на наших виртуальных машинах, обновленных до версии 6. Даже --debug и --verbose не сказали ничего полезного, просто "никаких тестов не выполнено". В конце концов оказалось, что классы и пространства имен были изменены в новой версии, и он просто не хотел выполнять файлы, содержащие ссылки на старые классы. Исправление для меня было просто заменить в каждом тестовом случае это:
class MyTestCase extends \PHPUnit_Framework_TestCase {...}
С:
use PHPUnit\Framework\TestCase; class MyTestCase extends TestCase {...}
В windows используйте следующую команду на терминале
.\vendor\bin\phpunit
это если команда
phpunit
возвращает "никаких тестов не выполняется!"
в то время как на Mac
./vendor/bin/phpunit
надеюсь, что это помогает.
Я понимаю, что это очень старый, но это просто случилось со мной тоже. Надеюсь, это кому-то поможет.
моя проблема была в том, что я забыл символ '@' в /** @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>
вы можете добавить несколько каталогов там.
Я вытащил мои волосы в течение 10 минут, прежде чем я решил использовать -- debug (хороший кстати), чтобы обнаружить простой факт, что имя файла не соблюдать соглашение об именовании, у меня была дополнительная "s" в конце.
неправильно
CreateAdminTests
право
CreateAdminTest
надеюсь, что эта заметка может помочь кому-то
для меня, используя phpunit --debug показал мне, какой тест он не выполнял, внутри у меня было
$this->visit('/') ->see('Laravel');
и я думаю, потому что каталог был защищен .аутентификация htaccess, он не мог пройти, чтобы посетить страницу
решение для меня было вынуть этот тест (или, скорее всего, вынуть .проверка подлинности реврайт)
мой был немного смешной.
когда я использовал php artisan make: test я случайно поставил .php как ProductRewardPointController.php, который создал ProductRewardPointController.РНР.php и phpunit просто проигнорировали его.
Я просто удаляю лишнее .php и все возвращается в норму
Это очень поздно, но я надеюсь, что это помогает кто-то.
Я получил мои тесты с помощью абсолютной ссылки. структура папок [ проект/тесты/Тест.php]
моя строка каталога выглядела так ./тесты/Тест.php
может быть, немного сбоку, но если вы (как и я) используете Laravel в Vagrant, убедитесь, что вы используете phpunit внутри коробки vagrant, а не на "стороне windows". :)