私はこのエラーを受け取ります:
1) XTest::testX
array_merge(): Argument #1 is not an array
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
このテストケース:
use PHPUnit\Framework\TestCase;
class XTest extends TestCase
{
function __construct()
{}
function testX()
{
$this->assertTrue(true);
}
}
削除した場合__construct
メソッド、テストに合格しました。 PHPUnitによるクラスコンストラクターメソッドの処理はどうなっていますか? PHPUnitバージョン4.8では問題なく動作しましたが、現在はPHPUnitバージョン6.1.3を使用しています。
PHPUnitは、ベースの初期化にコンストラクタを使用しますTestCase
あなたはここでコンストラクタメソッドを見ることができます: https://github.com/sebastianbergmann/phpunit/blob/6.1.3/src/Framework/TestCase.php#L328
public function __construct($name = null, array $data = [], $dataName = '')
コンストラクターはphpunitによって使用され、シグニチャーなどを変更すると問題が発生する可能性があるため、使用しないでください。
Phpunitが呼び出す特別なsetUp
およびsetUpBeforeClass
メソッドを使用できます。
use PHPUnit\Framework\TestCase;
class XTest extends TestCase
{
function static setUpBeforeClass()
{
// Called once just like normal constructor
// You can create database connections here etc
}
function setUp()
{
//Initialize the test case
//Called for every defined test
}
function testX()
{
$this->assertTrue(true);
}
// Clean up the test case, called for every defined test
public function tearDown() { }
// Clean up the whole test class
public static function tearDownAfterClass() { }
}
ドキュメント: https://phpunit.de/manual/current/en/fixtures.html
setUp
は、クラス内の指定されたすべてのテストに対して呼び出されることに注意してください。
単一の初期化では、setUpBeforeClass
を使用できます。
そして別のヒント:-v
フラグを使用してphpunitを実行し、スタックトレースを表示します;)
Testクラスでparent::__construct();
を呼び出すことができます:
public function __construct() {
parent::__construct();
// Your construct here
}
これを行わないでください。 Sander Visserの答えの方が優れています。彼の答えを読んでください。