PhpUnit invoker.php 个问题
PhpUnit invoker.php issues
我正在尝试 运行 一些 PhpUnit 测试,它运行良好,但我一直 运行 关注以下问题。
当我编写一个 Unittest 并且无论出于何种原因它失败时,我收到以下错误消息(我还收到一条不清楚的消息,为什么测试失败):
1) testUser_ReadOnly::testLoginFunction
PHP Warning: require_once(../classes/PHP_Invoker.php): failed to open stream: No such file or directory in C:\xampp\htdocs\map\src\tests\autoload.php on line 6
现在我在 Internet 上找到了一个解决方案,它只是说我必须将以下行添加到我的 composer.json 中:
"phpunit/php-invoker": "1.1.*"
然后当我尝试 运行 作曲家更新功能时,我收到以下错误消息:
Problem 1
- phpunit/php-invoker 1.1.4 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- phpunit/php-invoker 1.1.3 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- phpunit/php-invoker 1.1.2 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- phpunit/php-invoker 1.1.1 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- Installation request for phpunit/php-invoker 1.1.* -> satisfiable by phpunit/php-invoker[1.1.1, 1.1.2, 1.1.3, 1.1.4].
有没有人能解决这个问题?任何帮助表示赞赏!
提前致谢!
乍一看错误消息确实不是很清楚,但这已经是问题的解决方案:您的设置与 PHPUnit 不兼容,您在文件 C:\xampp\htdocs\map\src\tests\autoload.php
中配置的自动加载器将测试套件带到暂停。
与配置问题一样,它们在最终解决之前很难掌握。然后他们看起来很容易。只需检查有问题的文件并使用步进调试器(例如 xdebug)启动测试套件,在有问题的行放置一个断点。您应该能够快速找到罪魁祸首,并且很可能会立即发现导致问题的原因。
php-invoker
需要 php pcntl 扩展名。您的 php 似乎未在启用 pcntl 扩展的情况下编译。您可以通过 运行 php -m|grep pcntl
检查。如果你得到 pcntl
,那么它就被启用了,但是如果你没有得到任何东西,那么它就没有。在任何情况下,如 here 所述,pcntl 不适用于 windows,并且从您的路径来看,您似乎在 windows.
好的,我找到了解决这个问题的方法。当我开始使用 phpUnit 时,我不清楚我必须 运行 来自 Xampp shell 而不是 windows 命令行的命令。您可以通过打开 Xampp 控制面板并单击 'shell button' 找到它。自从我在这里执行 phpUnit 命令后,我再也没有遇到过这些问题。因此,当您遇到与我在问题中发布的相同的错误时,请尝试在 Xampp shell.
中执行 PHPUnit 命令
我正在尝试 运行 一些 PhpUnit 测试,它运行良好,但我一直 运行 关注以下问题。 当我编写一个 Unittest 并且无论出于何种原因它失败时,我收到以下错误消息(我还收到一条不清楚的消息,为什么测试失败):
1) testUser_ReadOnly::testLoginFunction
PHP Warning: require_once(../classes/PHP_Invoker.php): failed to open stream: No such file or directory in C:\xampp\htdocs\map\src\tests\autoload.php on line 6
现在我在 Internet 上找到了一个解决方案,它只是说我必须将以下行添加到我的 composer.json 中:
"phpunit/php-invoker": "1.1.*"
然后当我尝试 运行 作曲家更新功能时,我收到以下错误消息:
Problem 1
- phpunit/php-invoker 1.1.4 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- phpunit/php-invoker 1.1.3 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- phpunit/php-invoker 1.1.2 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- phpunit/php-invoker 1.1.1 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- Installation request for phpunit/php-invoker 1.1.* -> satisfiable by phpunit/php-invoker[1.1.1, 1.1.2, 1.1.3, 1.1.4].
有没有人能解决这个问题?任何帮助表示赞赏! 提前致谢!
乍一看错误消息确实不是很清楚,但这已经是问题的解决方案:您的设置与 PHPUnit 不兼容,您在文件 C:\xampp\htdocs\map\src\tests\autoload.php
中配置的自动加载器将测试套件带到暂停。
与配置问题一样,它们在最终解决之前很难掌握。然后他们看起来很容易。只需检查有问题的文件并使用步进调试器(例如 xdebug)启动测试套件,在有问题的行放置一个断点。您应该能够快速找到罪魁祸首,并且很可能会立即发现导致问题的原因。
php-invoker
需要 php pcntl 扩展名。您的 php 似乎未在启用 pcntl 扩展的情况下编译。您可以通过 运行 php -m|grep pcntl
检查。如果你得到 pcntl
,那么它就被启用了,但是如果你没有得到任何东西,那么它就没有。在任何情况下,如 here 所述,pcntl 不适用于 windows,并且从您的路径来看,您似乎在 windows.
好的,我找到了解决这个问题的方法。当我开始使用 phpUnit 时,我不清楚我必须 运行 来自 Xampp shell 而不是 windows 命令行的命令。您可以通过打开 Xampp 控制面板并单击 'shell button' 找到它。自从我在这里执行 phpUnit 命令后,我再也没有遇到过这些问题。因此,当您遇到与我在问题中发布的相同的错误时,请尝试在 Xampp shell.
中执行 PHPUnit 命令