소스를 꽤 오랜 시간 동안 보냈다가 "여러 브라우저"시나리오에 대한 해결책을 찾았습니다. chapmatic의 여러 브라우저에 대한 주장과 주어진 답변은 실제로 정확했습니다. 병렬 테스트에서는 작동하지 않으며 $ 브라우저 배열에 여러 브라우저가 정의되어있는 경우 동일한 브라우저가 여러 번 실행됩니다. 이 솔루션은 여전히 환경 변수를 사용하지만 $ 브라우저 배열을 사용해야합니다.
그래서 먼저 추상 테스트 클래스에 $ 브라우저 배열을 정의해야합니다. 그런 다음, env var BROWSER를 정의하고 테스트 할 브라우저를 지정했다고합시다. 당신은 소스 \ 소시지 \의 WebDriverTestCase를 확장하는 추상 테스트 클래스에 다음과 같은 정적 기능을 설정할 수 있습니다
이제 browserSetup가(), 당신이이 테스트 스위트가 설정되기 전에 호출되어 있는지 확인해야 정의되어 있는지
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;
}
테스트가 BROWSER 환경 변수에서 지정한 브라우저에서만 실행되도록 설정됩니다.Sauce \ Sausage \ WebDriverTestCase에 의해 소비되는 PHPUnit_Extensions_Selenium2TestCase를 살펴 보겠습니다. PHPUnit_Extensions_Selenium2TestCase는 다음과 같은 방법을 정의합니다
이 방법은 당신이 당신의 추상 테스트 클래스에서이 메소드를 오버라이드 (override) 할 필요가 있으므로 확인하고, 당신이 당신의 $ 브라우저 배열에 지정된 모든 브라우저에서 테스트 스위트를 설정하기 위해 호출되는
public static function suite($className)
{
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
fromTestCaseClass 전에 browserSetup을()()를 호출하기 위해 호출된다 :
public static function suite($className)
{
self::browserSetup();
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
지금, 당신은 테스트하고자하는 브라우저를 사용하여 환경 변수 브라우저를 정의하면, 당신이 될 것입니다 테스트 스위트와 $ 브라우저 배열을 찰 수 BROWSER enviro에 정의 된 단일 브라우저에 대해 지정한 설정으로 제대로 무시됩니다. 변수. jenkins가 Build-> Execute 쉘 섹션에서이 환경 변수를 올바르게 설정했는지 확인하십시오.
Jenkins에는 작업을 트리거 할 때 매개 변수를 사용하는 매개 변수 플러그인이 있습니다. 다음과 같이 하시겠습니까? https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build가 도움이됩니까? –
phpunit 테스트 케이스에 매개 변수를 가져 오는 데 문제가 없습니다. 일단 그들이 거기에있어, 그것을 사용하는 너무 늦은 것 같습니다. –