여러 장치에서 동시에 Appium을 사용하여 테스트를 실행하기위한 testNG 제품군을 만들려고합니다. 현재 @BeforeSuite를 사용하여 각 장치에 대한 서버/드라이버를 설정 한 다음 @BeforeMethod 및 @AfterMethod 함수를 사용하여 테스트 메소드에 연결을 분배합니다. 필자는 각 테스트 클래스와 관련된 여러 하위 .xml 파일을 호출하는 마스터 suite-suite-xml을 보유하고 있습니다. 테스트 클래스는 @Factory와 각각 연결되어있어 인스턴스를 병렬로 실행할 수 있습니다 (연결된 장치 수에 따라 런타임에 결정됨).TestNG Appium Paralell Run Organization
부모
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default Suite">
<parameter name="other" value="@[email protected]"></parameter>
<suite-files>
<suite-file path="src/first.xml" />
<suite-file path="src/second.xml" />
</suite-files>
</suite>
나는 확실히 싶지 않아
public class TestFactory {
@Factory
public Object[] initial() {
int numDevices = DeviceManager.getNumAttachedDevices();
Object[] result = new Object[numDevices];
for (int i = 0; i < numDevices; i++) {
result[i] = new StartupTest();
}
return result;
}
}
아이
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="first" parallel="instances">
<test name="android">
<classes>
<class name="TestFactory" />
</classes>
</test>
</suite>
공장 이. 필자가 원하는 각 테스트 클래스에 대해 새 @Factory 클래스를 만들어야한다는 것은 상당히 우스운 것 같습니다. 최근에 비슷한 결과를 얻기 위해 paralell = "methods"및 invocationCount에 대한 주석 변 환기와 함께 사용할 수있는 @DataProvider 내부에 parallel = true를 사용할 수 있다는 것을 알았습니다 (첨부 된 각 메소드에 대해 하나의 메소드가 실행 중임). 장치).
@BeforeMethod 및 @AfterMethod 호출을 사용하여 올바른 장치에서 필수 설정 및 정리를 수행하는 방법을 모르겠습니다 (장치 이름이 누락 됨). 이 작업을 수행하는 다른 권장 방법이 있습니까? 아니면이게 최선의 선택입니까?