不知道是否与 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%)
我该如何解决这个问题?
似乎您全局安装的版本不满足最低版本要求。尝试跑步
phpunit --version
我打赌你会得到一些像
5.1
的东西。 php artisan dusk
命令使用位于 vendor/bin/phpunit
中的不同版本。因此,您也可以使用此版本。只需输入:
vendor/bin/phpunit
而不是
phpunit
。如果它有效,你必须升级你的全局 phpunit 版本。
在我的例子中,以下命令在 Windows 环境中有效,用
\
代替 /
:
vendor\bin\phpunit
我在 Laravel 5.4 中也遇到了同样的问题。以下对我有用:
第 1 步:更新您的 Composer 依赖项:
composer update
第2步:运行
phpunit
:
vendor/bin/phpunit
您可以通过指定文件来运行特定测试:
vendor/bin/phpunit tests/Feature/ExampleTest.php
我有同样的问题并通过此步骤解决:
$ 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 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.
对于任何遇到此问题的人来说,
vendor/bin/phpunit
绝对有效,但您可能希望将此行添加到您的 .bashrc 或 .bash_profile 或任何方便您使其工作的地方。
PATH="./vendor/bin:$PATH"
*仅在 Linux 上测试
我在 homestead laravel 5.6 上也遇到了同样的错误 当我从我的用户运行 phpunit 命令时,它工作正常,但是当我通过 sudo 运行它时,我收到了该错误。尝试从您的用户运行此命令而不是 sudo 也许它也适合您
一种解决方案是将供应商/bin 添加到路径的开头。在运行 bash 的类 Unix 操作系统上,您可以将以下内容添加到 .bashrc 文件的末尾:
export PATH=vendor/bin:$PATH
在 Windows 10 中,您可以通过访问
系统属性、高级选项卡并单击 环境变量...按钮来访问
Path
环境变量。
无论哪种方式,在路径前面插入vendor/bin都会导致你的操作系统在./vendor/bin中查找phpunit。如果您位于 Laravel 项目的根目录中,它将找到 Laravel 中包含的可执行文件。如果没有,它将继续使用全球版本。