PHPUnit_Framework_异常:PHPUnit_Framework_TestCase::$name不能为null

PHPUnit_Framework_异常:PHPUnit_Framework_TestCase::$name不能为null,php,phpunit,vagrant,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 bac

我正在开发一个流浪者盒子,它是专门为这个目的定制的。我的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>

/测试/
应用程序/

所以基本上问题在于覆盖的
\u构造方法:

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

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

因此基本上问题在于覆盖的
\uu构造函数方法:

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

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

删除构造函数只是为了避免错误,而不是解决错误。问题是,您正在扩展PHPUnit_Framework_TestCase类,它有一个带有签名的构造函数:public function_uuconstruct($name=null,array$data=[],$dataName='')。 看到问题了吗?它需要$name、$data和$dataName,而您什么也没有给它

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

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

    // your constructor code goes here.
}

我也遇到了同样的问题,这很好地解决了它。

删除构造函数只会避免错误,而不会解决它。问题是,您正在扩展PHPUnit_Framework_TestCase类,它有一个带有签名的构造函数:public function_uuconstruct($name=null,array$data=[],$dataName='')。 看到问题了吗?它需要$name、$data和$dataName,而您什么也没有给它

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

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

    // your constructor code goes here.
}

我遇到了同样的问题,这很好地解决了它。

您可能需要在这里添加一些代码。可能是测试本身<代码>$name
应该在类名后自动分配。你能帮我吗@没有代码我只能猜测。github上没有Laravel v 5.2.22对此没有帮助。请转到此处:我添加了phpunit.xml的内容。您可能需要在此处添加一些代码。可能是测试本身<代码>$name
应该在类名后自动分配。你能帮我吗@没有代码我只能猜测。github上没有Laravel v 5.2.22对您没有帮助。请转到这里:我添加了phpunit.xml的内容。为什么您需要实现构造函数?通常最好使用
setUp
setUpBeforeClass
方法。@gontrollez,没错,没有必要。如果答案不清楚,很抱歉。非常感谢任何更好的措辞。为什么需要实现构造函数?通常最好使用
setUp
setUpBeforeClass
方法。@gontrollez,没错,没有必要。如果答案不清楚,很抱歉。任何更好的措辞都将受到高度赞赏。