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>
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.
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.