PHPUnit和PHPStorm ... ResultPrinter.php错误

时间:2014-10-31 16:01:35

标签: php phpunit phpstorm

每当我从PHPStorm运行phpunit测试时,我都会收到错误消息。我在下面提供了更多信息。我不确定我在哪里配置了设置。

我的设置

  • Ubuntu的
  • PHPStorm 8.0.1
  • PHPUnit 4.3.4

更多信息:

PHPUnit.phar位于/usr/local/bin/phpunit.phar。我已经在PHPStorm中直接设置了PHPUnit路径。测试从bash运行没有问题。我还在PHPUnit中设置了我的配置文件phpunit.xml,它位于我项目的根目录中。 phpunit.xml文件告诉phpunit加载作曲家autoload.php文件。

PHPUnit输出:

/usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 /tmp/ide-phpunit.php --configuration /home/mkelley/projects/CompanyName/phpunit.xml
Testing started at 10:33 AM ...
PHPUnit 4.3.4 by Sebastian Bergmann.

Configuration read from /home/mkelley/projects/CompanyName/phpunit.xml

PHP Fatal error:  Call to undefined method  CompanyNameTests\Boundaries\BoardMemberVotingBoundaryTest::hasExpectationOnOutput() in phar:///usr/local/bin/phpunit.phar/phpunit/TextUI/ResultPrinter.php on line 545
PHP Stack trace:
PHP   1. {main}() /tmp/ide-phpunit.php:0
PHP   2. IDE_Base_PHPUnit_TextUI_Command::main($exit = *uninitialized*) /tmp/ide-phpunit.php:500
PHP   3. PHPUnit_TextUI_Command->run($argv = *uninitialized*, $exit = *uninitialized*) /tmp/ide-phpunit.php:243
PHP   4. PHPUnit_TextUI_TestRunner->doRun($suite = *uninitialized*, $arguments = *uninitialized*) phar:///usr/local/bin/phpunit.phar/phpunit/TextUI/Command.php:186
PHP   5. PHPUnit_Framework_TestSuite->run($result = *uninitialized*) /home/mkelley/projects/CompanName/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:423
PHP   6. PHPUnit_Framework_TestSuite->run($result = *uninitialized*) /home/mkelley/projects/CompanName/vendor/phpunit/phpunit/src/Framework/TestSuite.php:703
PHP   7. PHPUnit_Framework_TestCase->run($result = *uninitialized*) /home/mkelley/projects/CompanName/vendor/phpunit/phpunit/src/Framework/TestSuite.php:703
PHP   8. PHPUnit_Framework_TestResult->run($test = *uninitialized*) /home/mkelley/projects/CompanName/vendor/phpunit/phpunit/src/Framework/TestCase.php:771
PHP   9. PHPUnit_Framework_TestResult->endTest($test = *uninitialized*, $time = *uninitialized*) /home/mkelley/projects/CompanName/vendor/phpunit/phpunit/src/Framework/TestResult.php:760
PHP  10. PHPUnit_TextUI_ResultPrinter->endTest($test = *uninitialized*, $time = *uninitialized*) /home/mkelley/projects/CompanyName/vendor/phpunit/phpunit/src/Framework/TestResult.php:378

Process finished with exit code 255

我搜索了Google,但无法找到类似的问题。我感谢任何帮助!

修改

这是我的phpunit.xml文件。 PHPStorm将其用作“使用备用配置文件”

<?xml version="1.0" encoding="UTF-8"?>
    <phpunit backupGlobals="false"
         backupStaticAttributes="false"
         colors="true"
         bootstrap="./vendor/autoload.php"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
>
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>

5 个答案:

答案 0 :(得分:11)

这似乎是自动加载问题。当您为测试套件引导应用程序时,必须初始化自动加载器,这似乎不会发生,因为找不到某些东西。最简单的方法是使用Composer来管理PHPUnit依赖项,并通过autoload指令自动加载您的类。请参阅documentation中的psr-4部分。

然后在您的PhpStorm PHPUnit配置窗口中选择Use custom autoloader并指定vendor/autoload.php脚本的路径。

答案 1 :(得分:5)

我会回答我自己的问题,以防其他人遇到这个问题。

问题是通过composer和phpunit.phar自动加载PHPUnit。一旦我从作曲家PHPStorm中删除了phpunit依赖,就能够成功运行我的所有测试。

答案 2 :(得分:4)

有时候图像更好......

enter image description here

如您所见,您还可以使用phpunit.phar文件。

答案 3 :(得分:3)

问题不是你通过composer自动加载phpunit,而是在作曲家中使用旧版本的phpUnit。在我的情况下,而不是使用4.0.0我更新到4.6。*。

答案 4 :(得分:0)

我和composer一直有同样的问题,发现使用.phar没有任何问题。今天我刚刚意识到 sla sla额头这只是因为通过composer安装phpunit然后没有重新索引供应商文件夹引起的。

我没有发现我之前在使用composer安装新软件包时遇到过这个问题,但出于某种原因安装phpunit时,它没有重新索引供应商文件夹导致不一致。

重新索引,一切正常。