PHPUnit_Framework_Exception:PHPUnit_Framework_TestCase :: $ name不能为null

时间:2016-03-29 07:46:39

标签: php phpunit vagrant

我正在开发一个专为此目的而定制的流浪盒。我的PHPUnit版本为5.2.12,Laravel版本为5.2.22

当我执行phpunit命令时,出现以下错误:

PHPUnit_Framework_Exception: PHPUnit_Framework_TestCase::$name must not be null.

代码

以下是我的phpunit.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="true"
         stopOnFailure="false"
         stderr="true">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>

2 个答案:

答案 0 :(得分:4)

所以基本上问题在于覆盖__construct方法:

class TestCase extends Illuminate\Foundation\Testing\TestCase
{
    public function __construct() 
    {
        //some code which should not be there
    }
}

删除构造函数后,异常已经消失。

答案 1 :(得分:1)

通过删除构造函数,您只是避免错误,而不是解决它。问题是,您正在扩展PHPUnit_Framework_TestCase类,它具有带签名的构造函数:public function __construct($ name = null,array $ data = [],$ dataName =&#39;&#39;)。 看到问题了吗?它需要$ name,$ data和$ dataName,你没有给它任何东西!

所以,不要删除构造函数,而是像这样重写它:

public function __construct($name = null, array $data = [], $dataName = '') {
    parent::__construct($name, $data, $dataName);

    // your constructor code goes here.
}

我有同样的问题,这完全解决了它。