Проблема
Чтобы улучшить качество кода, я решил попробовать научиться тестировать свой код с помощью модульного тестирования вместо моих посредственных в лучшем случае решений для тестирования.
Я решил установить PHPUnit, используя composer для личной библиотеки, которая позволяет мне выполнять общие функции базы данных. Сначала у меня не было файла конфигурации для PHPUnit, и когда я запускал такие команды, как:
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
Обратите внимание, что это команда терминала, поэтому я не включил .php
расширение. Упомянутый выше GeneralStringFunctionsTest на самом деле является GeneralStringFunctionsTest.php
файлом.
Результат - то, что я ожидал:
Время: 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-файл composer и файл блокировки, а также файл phpunit xml на верхнем уровне в виде файлов.
Вещи, которые я пробовал
- Изменение каталога
phpunit.xml
наtests/GeneralStringFunctions
- Изменение каталога
phpunit.xml
на./tests
- Перемещение
phpunit.xml
файла вtests
каталог, а затем изменение каталога./
вместоtests
. - Добавление атрибута суффикса к тегу каталога,
phpunit.xml
чтобы указать "Тесты" в качестве явного суффикса.
источник
tests/GeneralStringFunctions/GeneralStringFunctionsTest
папка или имя файла?GeneralStringFunctionsTest.php
. В интерфейсе командной строки я не ввел.php
расширение, потому что оно работало без него.Test.php
а неTest
в вашем случае, но, тем не менее, вы можете опустить его, посколькуTest.php
это значение по умолчанию.phpunit.xml
?Ответы:
Как бы то ни было (опоздание), я столкнулся с этим недавно, когда делал новый проект Laravel 5.1 для простого веб-сайта. Я попытался отладить его и был сбит с толку, когда попробовал:
(который имеет тест по умолчанию, который просто утверждает, что истина истинна)
и увидел выход
Проблема в том, что для меня проблема была связана с моей установкой PHP - «phpunit» был глобально зарегистрирован и настроен по-другому, тогда как phpunit, поставляемый с установкой Laravel, был настроен правильно и отлично работал.
Итак, исправление запускает настроенный производителем phpunit (из того же корневого каталога, что и app / и tests /):
Надеюсь, это поможет кому-то другому!
источник
vendor/bin/phpunit
вместо глобальногоphpunit
двоичного файла. Я даже удалил глобальныйphpunit
двоичный файл, чтобы случайно не повторить ту же ошибку снова - и с тех пор он не появлялся. Отмечу это как принятый ответ, так как это, скорее всего, причина../vendor/bin/phpunit
помог мне на свежей установке laravel 5.4phpunit
alias
для./vendor/bin/phpunit
Ваш XML-файл и так в порядке. Однако вы должны убедиться, что файлы PHP в вашей
tests/
папке имеют следующие имена:tests / Test.php <--- Обратите внимание на заглавные буквы "T"
tests / user Test.php
tests / fooBar Test.php
и т. д.
Имена файлов должны заканчиваться на «Test.php» . Это то, что PHPUnit ищет в каталогах.
Кроме того, каждый метод тестирования должен иметь имя, начинающееся с «test»:
public function testFooBar() { // Your test code }
Надеюсь, это поможет!
источник
--test-suffix=anything.php
для переопределенияВ Windows используйте следующую команду на терминале
это если команда
возвращает "Тесты не выполнялись!"
пока на Mac
Надеюсь, это поможет.
источник
phpunit
на вашем глобальном пути нет (вы можете проверить, что он работает,phpunit --version
и посмотреть, соответствует ли он тому, что вы ожидаете. Xampp обычно устанавливает phpunit в том же каталоге php bin. Это было проблемой для меня.У меня была такая же проблема после того, как 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() { ... }
источник
@return void
не содержит '@test', что является причиной того, что phpunit не может идентифицировать это как тест.Я тянул за волосы 10 минут, прежде чем решил использовать --debug (кстати, хороший способ пойти), чтобы обнаружить тот простой факт, что имя файла не соответствует соглашению об именовании , у меня в конце была дополнительная буква «s» .
неправильно
верно
надеюсь, что эта заметка может кому-то помочь
источник
Вам нужно просто позвонить из файла поставщика
vendor\bin\phpunit
Уведомление \ Not /источник
Вместо запуска phpunit
использовать
поставщик \ bin \ phpunit
источник
если вы используете PHPSTORM, перейдите в Настройки, затем перейдите к
Test Frameworks
и нажмите + и выберите
PHPUnit Local
тогдаUse Composer Auto Loader
затем вставьте это, как в путь к полю сценарияC:\{YOUR PROJECT NAME}\vendor\autoload.php
нажмите ОК
HAPPY TESTING
источник
Проверьте файл phpunit.xml , загляните в тесты.
Моя версия phpunit (2019) ищет файлы с расширением (суффикс) * Test.php. Итак, убедитесь, что все тестовые файлы названы правильно (например: BookTest.php правильный, BookTests.php - нет, BookTestCase.php - нет).
источник
Пришел поздно на вечеринку, но эта информация может помочь другим.
Вышеупомянутые решения не помогли мне. Начиная с Laravel 7.x, по умолчанию PHPUnit выполняет только файлы PHP с суффиксом «Test.php». Например, если вы создаете тест, присвоение ему имени
CreateUser
не сработает, тогда как присвоение имениCreateUserTest
будет работать.Чтобы преодолеть ограничение, перейдите
phpunit.xml
и изменитеsuffix
атрибут изdirectory
элементов:... <testsuite name="Unit"> <!-- modify suffix --> <directory suffix=".php">./tests/Unit</directory> </testsuite> <testsuite name="Feature"> <!-- modify suffix --> <directory suffix=".php">./tests/Feature</directory> </testsuite> ...
Это даст указание PHPUnit запускать все файлы с
.php
расширениями из каталогов. Примечание по очистке кеша приложения после обновленияphpunit.xml
:Дополнительную информацию о конфигурации XML PHPUnit можно найти здесь: https://phpunit.de/manual/6.5/en/appendixes.configuration.html
источник
Вы добавили набор тестов в файл phpunit.xml?
<phpunit> <testsuite name="app1" > <directory>./</directory> </testsuite> </phpunit>
Вы можете добавить туда несколько каталогов.
источник
Time: 28 ms, Memory: 1.50Mb No tests executed!
Configuration read from /Users/muyiwa/Projects/Web Development/DatabaseHelper/phpunit.xml Time: 66 ms, Memory: 1.50Mb No tests executed!
. Он определенно работает, когда я вручную ссылаюсь на него, ему просто не нравится загрузка из файла конфигурации по какой-то причине :(Для меня использование phpunit --debug показало мне, какой тест он не выполнял, внутри у меня было
$this->visit('/') ->see('Laravel');
и я думаю, поскольку каталог был защищен аутентификацией .htaccess, он не мог пройти, чтобы посетить страницу
Решением для меня было пройти этот тест (или, скорее всего, отключить аутентификацию .htaccess).
источник
Это очень поздно, но я надеюсь, что это кому-то поможет.
Я запустил свои тесты, используя абсолютную ссылку. структура папок [проект / тесты / test.php]
моя строка каталога выглядела так ./tests/test.php
источник
Возможно, немного сбоку, но если вы (как и я) используете Laravel в Vagrant, убедитесь, что вы запускаете phpunit внутри бродячего окна, а не на «стороне окна». :)
источник
У меня была проблема с тем, что тесты не выполнялись, даже когда все было настроено нормально.
Причина заключалась в том, что пространство имен было не первой командой файла, а после некоторых комментариев блока документации.
возврат заставил phpunit увидеть тесты и работать правильно.
источник
Мой был немного забавным.
Когда я использовал
php artisan make:test
я случайно поставил .php какProductRewardPointController.php
создавшиеProductRewardPointController.php.php
и PHPUnit просто игнорировала его.Я просто удаляю лишний .php и все возвращается в норму
источник
У меня была такая же проблема : Тесты не выполнялись! , решается сохранением того же имени файла и имени класса .
источник
Если вы используете IDE, такие как JetBrains PHPStorm , обратите внимание, что: в
Run/Debug Configurations
окнеTest scope
необходимо указатьdirectory
и указать в этом каталоге, гдеtests
находится ваша папка.Мне потребовалось полчаса, чтобы понять, что я забыл установить каталог. Вы можете использовать global,
phpunit.phar
если вы правильно настроили область тестирования и каталог, IDE будет обрабатывать другие вещи за вас.источник
Имена функций в тестовом файле должны иметь префикс
test
или комментарий перед функцией./** @test */
Убедитесь, что это не
/* @test */
потому что это не работает. после косой черты должно быть две звездочки, а не одна.
источник
с помощью консоли de cmd эта проблема была решена, пройдя полный тест пути.
Я не нашел другого способа сделать это Так не работает
Надеюсь, это было кому-то полезно
источник