При попытке запустить любые тесты PHPUnit я всегда получаю сообщение No tests executed!
на моем компьютере MacOS. Простой способ воспроизвести на этой конкретной машине - установить новый экземпляр Laravel и запустить тесты по умолчанию:
$ composer create-project --prefer-dist laravel/laravel blog
$ cd blog
$ vendor/bin/phpunit
=> No tests executed!
Ожидаемый результат будет OK (2 tests, 2 assertions)
.
Насколько мне известно, это не проблема конфигурации PHPUnit, поскольку ожидается, что код Laravel по умолчанию будет работать, такая же проблема возникает с другим фреймворком и любым кодом, который я пробую, та же проблема присутствует с другой версией PHPUnit (8.5 и 9.4), и точные шаги, перечисленные выше, возвращают ожидаемый результат внутри виртуальной машины Ubuntu, а также на другом Mac, работающем под управлением Catalina.
На самом деле, я подозреваю, что это не проблема PHPUnit, скорее проблема MacOS или проблема конфигурации PHP, которая может проявиться в другой форме позже с другим инструментом или проектом. .
PHPUnit работал нормально на этой машине, но пару недель / месяцев я фактически не использовал его. Единственное, что изменилось с тех пор, как я последний раз (успешно) использовал любой PHPUnit на этом Mac, так это обновление до MacOS Big Sur и установка (а затем удаление) Homebrew.
Проблема заключается в том, что PHPUnit не может найти какой-либо набор тестов. Запуск vendor/bin/phpunit --testsuite Unit
по-прежнему выводит No tests executed!
, а внутри новой установки Laravel должен выводить Ok (1 test, 1 assertion)
.
Итак, мой вопрос: есть ли что-нибудь еще, что я могу попытаться исправить перед новой установкой macOS Big Sur, и есть ли у кого-нибудь такая же проблема?
РЕДАКТИРОВАТЬ - 1 декабря 2020 г.
Согласно запросу в комментариях, вот мой phpunit.xml
, который, как описано выше, является Laravel по умолчанию.
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
</coverage>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<!-- <server name="DB_CONNECTION" value="sqlite"/> -->
<!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
</phpunit>
Опять же, это не должно иметь значения, так как любая конфигурация возвращает тот же результат на этом компьютере, даже если раньше было известно, что оно работает на другом Mac и в другой ОС.
Запуск тестов с помощью artisan:
$ php artisan test --testsuite Unit
No tests executed!
Time: 0.01s
Вывод vendor/bin/phpunit --list-suites
:
$ vendor/bin/phpunit --list-suites
PHPUnit 9.4.4 by Sebastian Bergmann and contributors.
Available test suite(s):
- Unit
- Feature
Вывод vendor/bin/phpunit -v --testsuite Unit
:
$ vendor/bin/phpunit -v --testsuite Unit
PHPUnit 9.4.4 by Sebastian Bergmann and contributors.
Runtime: PHP 7.3.22-(to be removed in future macOS)
Configuration: /Users/malou/Desktop/blog/phpunit.xml
No tests executed!
Примечание:
/Users/malou/Desktop/blog/phpunit.xml
- это то, что показано выше.
Прямая ссылка на файлы работает:
$ vendor/bin/phpunit ./tests/Unit
PHPUnit 9.4.4 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 00:00.006, Memory: 8.00 MB
OK (1 test, 1 assertion)
Редактировать # 2 - 1 декабря 2020 г.
Дополнительная информация об отладке для вас:
$ php -v
WARNING: PHP is not recommended\nPHP is included in macOS for compatibility with legacy software.\nFuture versions of macOS will not include PHP.
PHP 7.3.22-(to be removed in future macOS) (cli) (built: Oct 30 2020 00:19:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.22, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.0, Copyright (c) 2002-2019, by Derick Rethans
MacOS Big Sur 11.0.1
Изменить - 2 декабря 2020 г.
В ответ на PHPUnit всегда выводит Тесты не выполняются! в MacOS Big Sur:
Я добавил следующее:
public static function main(bool $exit = true): int
{
var_dump(ini_get("auto_prepend_file"));
var_dump($_SERVER['argv']); die;
return (new static)->run($_SERVER['argv'], $exit);
}
При выполнении vendor/bin/phpunit
:
/Users/malou/Desktop/blog/vendor/phpunit/phpunit/src/TextUI/Command.php:163:
string(0) ""
/Users/malou/Desktop/blog/vendor/phpunit/phpunit/src/TextUI/Command.php:164:
array(1) {
[0] =>
string(18) "vendor/bin/phpunit"
}
При выполнении vendor/bin/phpunit --testsuite Unit
/Users/malou/Desktop/blog/vendor/phpunit/phpunit/src/TextUI/Command.php:163:
string(0) ""
/Users/malou/Desktop/blog/vendor/phpunit/phpunit/src/TextUI/Command.php:164:
array(3) {
[0] =>
string(18) "vendor/bin/phpunit"
[1] =>
string(11) "--testsuite"
[2] =>
string(4) "Unit"
}
vendor/bin/phpunit --list-suites
? Иvendor/bin/phpunit -v --testsuite Unit
файл конфигурации - этоphpunit.xml
? - person Total Pusher   schedule 02.12.2020PHPUnit\TextUI\Command::main();
нашел это:return (new static)->run($_SERVER['argv'], $exit);
. Пожалуйста, добавьтеvar_dump(ini_get("auto_prepend_file")); var_dump($_SERVER['argv']); die;
и покажите результат. - person Total Pusher   schedule 02.12.2020