douxian1895
douxian1895
2016-03-29 07:46
浏览 57
已采纳

PHPUnit_Framework_Exception:PHPUnit_Framework_TestCase :: $ name不能为null

I am developing on a vagrant box which was custom built to serve the purpose. My PHPUnit version is 5.2.12 and Laravel version is 5.2.22.

When I am executing phpunit command, I get the following errors:

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

Code

Below is my phpunit.xml content:

<?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条回答 默认 最新

  • douya2007
    douya2007 2016-03-29 09:06
    已采纳

    So basically the problem was with overwritten __construct method:

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

    The exception has gone after removing the constructor.

    点赞 评论
  • douxian9943
    douxian9943 2017-01-08 16:35

    by deleting the constructor you just avoiding the error, not solving it. the problem is, you are extending PHPUnit_Framework_TestCase class, which has a constructor with a signature: public function __construct($name = null, array $data = [], $dataName = ''). see the problem? it expects $name, $data and $dataName, and you gave to it nothing!

    so, don't remove the constructor, but rewrite it like this:

    public function __construct($name = null, array $data = [], $dataName = '') {
        parent::__construct($name, $data, $dataName);
    
        // your constructor code goes here.
    }
    

    i had the same problem and this solved it perfectly.

    点赞 评论

相关推荐