2016-07-11 12 views
0

ich den unten Testskript habe:PHPUnit Fehler: Fehlendes Argument 1 mit Datenprovider

class testTest extends PHPUnit_Framework_TestCase 
{ 

    public function provider() { 
     return [ 
      [1,false], 
      [2,true] 
     ]; 
    } 

    /** 
    * @test 
    * @provider provider 
    */ 
    public function test_test($num, $expected) { 
     $actual = $num%2 ? false : true; 
     $this->assertEquals($actual, $expected); 
    } 
} 

Jedes Mal, wenn ich diese laufen bekomme ich den Fehler:

1) testTest::test_test 
Missing argument 1 for testTest::test_test() 

Ich habe andere Tests in meinem Test-Anzug die DataProvider nicht verwenden und sie funktionieren gut. Wie behebe ich das?

+1

Können Sie ganze Klasse einfügen? Versuchen Sie zunächst, den Namen der Datenprovidermethode von "testDataProvider" in "provider" zu ändern (ändern Sie auch den Namen in der Anmerkung) – rokas

+0

Überprüfen Sie das Update. TestDataProvider wie vorgeschlagen geändert, aber kein Glück. –

Antwort

1

Ändern @provider zu @dataProvider, z.B.

/** 
* @dataProvider provider 
*/ 
public function test_test($num, $expected) { 
    $actual = $num%2 ? false : true; 
    $this->assertEquals($actual, $expected); 
} 

Lesen Sie die Dokumentation: https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.dataProvider


PS: Sie haben die Argumente falsch herum in Ihrem assertEquals haben. Es sollte sein:

$this->assertEquals($expected, $actual); 

Nochmal: https://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertEquals