After I run a few parallel tests on real devices, error will occur: abnormal instrument termination.
Below is a part of my implementation:
public class LogonFlow.java {
@BeforeClass
@Parameters({ "tempDir" })
public void setup(final String tempDir) {
this.service = AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
.withAppiumJS(new File("/Applications/appium.app/Contents/Resources/node_modules/appium/build/lib/main.js"))
.withArgument(GeneralServerFlag.TEMP_DIRECTORY, tempDir)
.withArgument(GeneralServerFlag.SESSION_OVERRIDE)
.usingAnyFreePort()
.withArgument(GeneralServerFlag.LOG_LEVEL, "info"));
this.service.start();
}
@BeforeMethod
@Parameters({ "udid", "deviceName", "platformVersion" })
public void beforeMethod(final String tempDir, final String udid, final String deviceName, final String platformVersion) {
this.driver = new AppiumIOSDriver(service.getUrl().toExternalForm(), udid,
deviceName, platformVersion);
}
@AfterMethod
public void afterMethod() {
this.driver.destroy();
this.driver = null;
}
@AfterClass
public void shutdown() {
if (this.service != null && this.service.isRunning()) {
this.service.stop();
}
this.service = null;
}
}
public class AppiumIOSDriver {
public AppiumIOSDriver(final String url, final String udid, final String deviceName, final String platformVersion) {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "IOS");
capabilities.setCapability("udid", udid);
capabilities.setCapability("deviceName", deviceName);
capabilities.setCapability("platformVersion", platformVersion);
capabilities.setCapability("noReset", true);
capabilities.setCapability("newCommandTimeout", 5);
capabilities.setCapability("app", "/Users/shappysay/ChockieWork/deviceCloud/src/test/resources/app/HSBCMobile.app");
try {
this.iosDriver = new IOSDriver<WebElement>(new URL(url), capabilities);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Could anyone figure out what’s wrong?