PHPunit 未捕获错误:调用未定义的方法 PHPUnit_Util_Configuration::getTestdoxGroupConfiguration()

问题描述 投票:0回答:7

不知道是否与 Laravel 5.4 有关。当我在安装 Laravel 5.4 后运行

phpunit
命令而不进行任何更改时,我得到

未捕获的错误:调用未定义的方法 PHPUnit_Util_Configuration::getTestdoxGroupConfiguration()`

但是当我运行

php artisan dusk
时,它运行正常:

cd c:\xampp\htdocs\ublocker
phpunit

输出:

PHP Fatal error:  Uncaught Error: Call to undefined method
PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1046
Stack trace:
#0 C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(167): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
#1 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#2 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#3 C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
#4 {main}
thrown in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1046

Fatal error: Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1046
Stack trace:
 C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(167): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
C:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
{main}
thrown in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1046

phpunit

输出:

PHP Fatal error:  Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1046
Stack trace:
#0 C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(167): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
#1 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#2 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#3 C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
#4 {main}
thrown in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1046

Fatal error: Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1046
Stack trace:
#0    C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(167): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
#1 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#2 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#3 C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
#4 {main}
thrown in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1046

c:\xampp\htdocs\ublocker>php artisan dusk
PHPUnit 5.7.7 by Sebastian Bergmann and contributors.

F.                                                                  2 / 2 (100%)

我该如何解决这个问题?

laravel laravel-5 phpunit
7个回答
77
投票

似乎您全局安装的版本不满足最低版本要求。尝试跑步

phpunit --version

我打赌你会得到一些像

5.1
的东西。
php artisan dusk
命令使用位于
vendor/bin/phpunit
中的不同版本。因此,您也可以使用此版本。只需输入:

vendor/bin/phpunit

而不是

phpunit
。如果它有效,你必须升级你的全局 phpunit 版本。


11
投票

在我的例子中,以下命令在 Windows 环境中有效,用

\
代替
/

vendor\bin\phpunit

9
投票

我在 Laravel 5.4 中也遇到了同样的问题。以下对我有用:

第 1 步:更新您的 Composer 依赖项:

composer update

第2步:运行

phpunit

vendor/bin/phpunit

您可以通过指定文件来运行特定测试:

vendor/bin/phpunit tests/Feature/ExampleTest.php

4
投票

我有同样的问题并通过此步骤解决:

检查差异版本

$ phpunit --version
PHPUnit 6.5.5 by Sebastian Bergmann and contributors.

$ ./vendor/bin/phpunit --version
PHPUnit 8.3.5 by Sebastian Bergmann and contributors.

更新全局 phpunit:

如果版本不相等,请使用

更新 phpunit
 composer global require phpunit/phpunit:^8

再次检查版本

$ phpunit --version
PHPUnit 8.3.5 by Sebastian Bergmann and contributors.

$ ./vendor/bin/phpunit --version
PHPUnit 8.3.5 by Sebastian Bergmann and contributors.

3
投票

对于任何遇到此问题的人来说,

vendor/bin/phpunit
绝对有效,但您可能希望将此行添加到您的 .bashrc 或 .bash_profile 或任何方便您使其工作的地方。

PATH="./vendor/bin:$PATH"

*仅在 Linux 上测试


0
投票

我在 homestead laravel 5.6 上也遇到了同样的错误 当我从我的用户运行 phpunit 命令时,它工作正常,但是当我通过 sudo 运行它时,我收到了该错误。尝试从您的用户运行此命令而不是 sudo 也许它也适合您


0
投票

一种解决方案是将供应商/bin 添加到路径的开头。在运行 bash 的类 Unix 操作系统上,您可以将以下内容添加到 .bashrc 文件的末尾:

export PATH=vendor/bin:$PATH

在 Windows 10 中,您可以通过访问

系统属性
高级选项卡并单击 环境变量...按钮来访问 Path环境变量。

无论哪种方式,在路径前面插入vendor/bin都会导致你的操作系统在./vendor/bin中查找phpunit。如果您位于 Laravel 项目的根目录中,它将找到 Laravel 中包含的可执行文件。如果没有,它将继续使用全球版本。

© www.soinside.com 2019 - 2024. All rights reserved.