为什么运行phpunit不运行vendor / bin / phpunit?

时间:2016-01-13 07:21:09

标签: laravel phpunit

我有一个奇怪的问题, 我跑的时候

$ phpunit

我得到了

Fatal error: Call to undefined method PHPUnit_Framework_TestResult::warningCount() in /home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php on line 185

Call Stack:
    0.0009     231392   1. {main}() /home/vagrant/.composer/vendor/phpunit/phpunit/phpunit:0
    0.0065     743872   2. PHPUnit_TextUI_Command::main() /home/vagrant/.composer/vendor/phpunit/phpunit/phpunit:47
    0.0066     744512   3. PHPUnit_TextUI_Command->run() /home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:106
    1.1720    6818904   4. PHPUnit_TextUI_TestRunner->doRun() /home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:155
    1.4597   16188088   5. PHPUnit_TextUI_ResultPrinter->printResult() /vagrant/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:446

然而,当我跑

$ ./vendor/bin/phpunit 

它按预期工作并运行我的测试。

也许我有其他程序或使用phpunit别名的东西?

我如何调试才能找到它? 有什么想法吗?

5 个答案:

答案 0 :(得分:3)

假设您已从当前Laravel App的phpunit安装了composer.json

运行: vendor/phpunit/phpunit/phpunit

因为全局的phpunit可能是不兼容的版本。在当前包中调用并执行。

答案 1 :(得分:1)

在Windows上我全局安装了不兼容的版本。

要解决此问题,请创建" phpunit.bat"在项目的根目录中:

"vendor/bin/phpunit"

这会优先于系统路径中的phpunit。

答案 2 :(得分:0)

在Windows上,您可以在项目的根目录中设置环境变量。

在控制台/终端中键入:

set phpunit=vendor/bin/phpunit

我和Laravel和PhpStorm有同样的问题,在我的 PhpStorm终端中输入后,问题解决了。

答案 3 :(得分:0)

您是如何配置添加/ vendor / bin到路径的?

我在~/.bashrc文件中有这个:

PATH="$PATH:/path/to/vendor/bin"

这会将/ vendor / bin /添加到路径的,所以如果您的路径中有更早的名为phpunit的其他可执行文件 - 在您的情况下,全局安装的 - 它将是而是打来电话。

要解决此问题,请将vendor/bin添加到~/.bashrc中路径的开头

PATH="/path/to/vendor/bin:$PATH"

然后注销并登录或运行source ~/.bashrc,系统应在您运行/vendor/bin/phpunit时首先找到phpunit

答案 4 :(得分:0)

我刚发现Windows大约有doskeys。我认为它们在Mac上称为别名,但是它们允许您创建一个命令作为另一个命令的别名。

这样,我可以使用:

doskey macroName=macroDefinition

在我的情况下是:

doskey p=.\vendor\bin\phpunit

这意味着我可以在项目文件夹中为phpunit使用命令p-更快!

例如,我现在可以使用以下命令:

p --filter my_single_test tests/MyExampleTest.php