java - 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()
。然而,这并没有成为解决方案,并导致了同样的结果。
解决方案
推荐阅读
- php - PHP:在抽象类中声明的变量不会从 cild 类中更改其值
- html - How to display a button to center on the same line?
- ios - 如何将 module.modulemap 打包到 CocoaTouch Swift 框架中?
- css - 将角材料的文本区域设置为组件的 50%
- c# - 如何在大型 c# 项目中进行 TDD 时处理缓慢的单元测试
- airflow - AIRFLOW_HOME 与 AIRFLOW__CORE__AIRFLOW_HOME 环境变量有什么区别
- r - 我的 P 值远低于我的预期,无法建立适当的功率曲线
- python - 作为 kwargs 的字典比使用的变量多
- excel - 忽略特定多页页面上的更改
- mysql - mySQL 嵌套 SELECT 问题