2016-05-04 9 views
1

Ich habe den folgenden PHP-Einheit Testfall.PHPUnit Selenium2Testcase funktioniert nicht mit Datenprovider

Zur Kontrolle ich aus dem eigentlichen Test kommentiert (auch mit dem ->url() Aufruf funktioniert es nicht)

<?php 

class BasicTest extends \PHPUnit_Extensions_Selenium2TestCase 
{ 
    static $browsers = array(
     'chrome28win7' => 
      array(
       'browserName' => 'chrome', 
       'desiredCapabilities' => array(
        'version' => '28', 
        'os' => 'Windows', 
        'os_version' => '7', 
        'resolution' => '1280x1024', 
       ), 
      ), 

    ); 

    /** 
    * @dataProvider urlDataProvider 
    * @param $path 
    */ 
    public function testUrlScreenshot($path) 
    { 
     return; // for checking 
     $this->url(env('BROWSER_BASE') . $path); 
    } 

    public static function urlDataProvider() 
    { 
     $list = <<<EOL 
datenschutz.html 
impressum.html 
EOL; 
     $plainArray = explode("\n", $list); 

     $result = array(); 

     foreach($plainArray as $entry) { 
      $result = array($entry); 
     } 
     return $result; 
    } 
} 

ich die folgende Ausnahme erhalten:

/usr/bin/php /home/example/local-workspace/example/vendor/phpunit/phpunit/phpunit --configuration /home/example/local-workspace/example/phpunit.xml --filter "/::testUrlScreenshot(.*)?$/" BasicTest /home/example/local-workspace/example/tests/frontend/BasicTest.php --teamcity 
Testing started at 10:18 ... 
PHP Fatal error: Call to undefined method PHPUnit_Framework_WarningTestCase::setupSpecificBrowser() in /home/example/local-workspace/example/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/SeleniumBrowserSuite.php on line 95 
PHP Stack trace: 
PHP 1. {main}() /home/example/local-workspace/example/vendor/phpunit/phpunit/phpunit:0 
PHP 2. PHPUnit_TextUI_Command::main() /home/example/local-workspace/example/vendor/phpunit/phpunit/phpunit:47 
PHP 3. PHPUnit_TextUI_Command->run() /home/example/local-workspace/example/vendor/phpunit/phpunit/src/TextUI/Command.php:110 
PHP 4. PHPUnit_Runner_BaseTestRunner->getTest() /home/example/local-workspace/example/vendor/phpunit/phpunit/src/TextUI/Command.php:133 
PHP 5. ReflectionMethod->invoke() /home/example/local-workspace/example/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php:87 
PHP 6. PHPUnit_Extensions_Selenium2TestCase::suite() /home/example/local-workspace/example/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php:87 
PHP 7. PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass() /home/example/local-workspace/example/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase.php:371 
PHP 8. PHPUnit_Extensions_SeleniumBrowserSuite->setupSpecificBrowser() /home/example/local-workspace/example/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/SeleniumTestSuite.php:142 
PHP 9. PHPUnit_Extensions_SeleniumBrowserSuite->browserOnAllTests() /home/example/local-workspace/example/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/SeleniumBrowserSuite.php:86 
PHP 10. PHPUnit_Extensions_SeleniumBrowserSuite->browserOnAllTests() /home/example/local-workspace/example/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/SeleniumBrowserSuite.php:93 

wenn ich nicht verwenden die DataProvider Annotation, kann ich Tests ausführen. Warum das? Ist @DataProvider

Antwort

1

Die Ausnahme tatsächlich einen weiteren Fehler vertuscht.

Debugging ergab dies:

enter image description here

So PHP Einheit ein Fehler ausgelöst, weil mein-Datensatz ungültig war (Daten-Set ein Array von Arrays sein muss), die irgendwie aus PHPUnit versucht setupSpecificBrowser() auf die Ausnahme zu nennen Klasse.

Das Fixieren des Datasets hat den Fehler behoben.

Verwandte Themen