首页 > 解决方案 > Appium:测试后从不调用 onDestroy()

问题描述

我是测试自动化和使用Appium原生 Android应用程序自动化一些 E2E 测试的初学者。我的测试文件是用 Java 编写的。

我注意到测试类中的测试方法之后,应用程序没有正确关闭,即调用onDestroy()onPause()。我注意到,因为我将一些数据存储在 SharedPreferences 中(在 onDestroy() 和 onPause() 中)并且文件保持不变或根本没有被创建。

我尝试了将 Desired Capability noReset 设置为 true/false 并在 @AfterMethod 中调用 driver.quit() 或 driver.closeApp 的各种组合。

我在 AVD (Pixel 2) 上运行测试。onResume() 和 onCreate() 似乎被正确调用。

到目前为止,我唯一的解决方案是在另一点将数据写入文件,但我觉得它真的很hacky,只是为了使测试工作。

因此,我真的很感激一些帮助!

谢谢

这应该是相关代码:

@BeforeMethod
public void setup () throws MalformedURLException {
    DesiredCapabilities caps caps = new DesiredCapabilities();
    caps.setCapability("deviceName", "device");
    caps.setCapability("udid", "emulator-5554");
    caps.setCapability("platformName", "Android");
    caps.setCapability("platformVersion", "8.0");
    caps.setCapability("skipUnlock","true");
    caps.setCapability("noReset",false);
    caps.setCapability("fullReset",true);
    caps.setCapability("app", "/path/to/my/app-debug.apk");
    driver = new AndroidDriver<MobileElement>(new 
    URL("http://0.0.0.0:4723/wd/hub"),caps);
    wait = new WebDriverWait(driver, 10);
}

@Test 
public void someTest() {
}
@Test 
public void anotherTest() {
}

@AfterMethod
public void teardown(){

    driver.closeApp();
} 

编辑:

我假设可能commit()通过 Appium 以某种方式干预了 SharedPreferences 的存储并将其更改为异步调用apply()。然而,这并没有成为解决方案,并导致了同样的结果。

标签: javaseleniumautomated-testsappiumappium-android

解决方案


推荐阅读