Nachdem ich ziemlich viel Zeit mit der Suche verbracht habe, habe ich eine Lösung für das Szenario "Mehrere Browser" gefunden. Die Behauptungen von chapmatic bezüglich mehrerer Browser und der gegebenen Antwort waren in der Tat richtig: Es funktioniert nicht für paralleles Testen und führt denselben Browser mehrere Male aus, wenn Sie mehrere Browser in Ihrem $ browser-Array definiert haben. Die Lösung verwendet weiterhin Umgebungsvariablen, aber Sie müssen weiterhin Ihr $ browser-Array verwenden.
Stellen Sie zuerst sicher, dass Sie Ihr $ browsers-Array in Ihrer abstrakten Testklasse definiert haben. Nehmen wir an, Sie definieren den env var BROWSER und weisen ihm den Browser zu, den Sie testen möchten. Sie können die folgende statische Funktion in der abstrakten Testklasse eingerichtet, die Sauce \ Wurst \ WebDriverTestCase erweitert:
public static function browserSetup()
{
switch (getenv('BROWSER')) {
case 'firefox':
self::$browsers = array(
array(
'browserName' => 'firefox',
'desiredCapabilities' => array(
'platform' => 'self::WIN_VERSION',
'version' => self::FIREFOX_VERSION,
)
)
);
break;
case 'safari':
//safari desiredCapabilities
break;
case 'explorer':
//ie desiredCapabilities
break;
case 'chrome':
//chrome desiredCapabilities
default: //This will just use the default $browsers array you defined
return;
}
Nun, da browserSetup() definiert ist, müssen Sie sicherstellen, dass es aufgerufen wird, bevor die Testsuite gesetzt auf, so dass die Tests nur für den Browser ausgeführt werden, den Sie in Ihrer BROWSER-Umgebungsvariablen angegeben haben.Schauen wir uns PHPUnit_Extensions_Selenium2TestCase an, das von Sauce \ Sausage \ WebDriverTestCase ausgegeben wird; PHPUnit_Extensions_Selenium2TestCase definiert die folgende Methode:
public static function suite($className)
{
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
Diese Methode wird aufgerufen, die Testsuite mit allen Browsern einrichten Sie in $ Browser Array angegeben, so dass Sie diese Methode in der abstrakten Testklasse außer Kraft setzen müssen, um sicherzustellen, browserSetup() vor fromTestCaseClass() aufrufen heißt:
public static function suite($className)
{
self::browserSetup();
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
Nun, wenn Sie die Umgebungsvariable BROWSER mit dem Browser, den Sie testen wollen definieren, können Sie Ihre Test-Suite beginnen und Ihre Array $ Browser sein Überschreiben Sie die Einstellungen, die Sie für den in Ihrem BROWSER enviro definierten Browser festgelegt haben Variable. Stellen Sie sicher, dass jenkins diese Umgebungsvariable im Abschnitt "Build-> Execute shell" richtig setzt, und Sie können loslegen.
Jenkins verfügt über Parameter-Plugins, die Parameter übernehmen, wenn Sie einen Job auslösen. Wäre so etwas wie folgt: https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build dir helfen? –
Ich habe keine Probleme die Params in den phpunit Testfall zu bekommen. Sobald sie da sind, scheint es zu spät, sie zu benutzen. –