如何以编程方式使用 Espresso 测试清除应用程序数据?
How to clear app data using Espresso test programatically?
我们目前正在为应用程序的某个区域编写 Espresso UI 测试,这需要我们在每次测试后清除应用程序数据
- 我们之前尝试过使用 Android Orchestrator
- 但是,我们之前曾尝试使用带有
clearPackageData=true
标志的 Android 测试协调器;这不适用于 Bitrise 和本地测试执行。例如,我们中的一些人无法 运行 使用此标志在本地进行测试,尽管我们使缓存等无效
-我们的下一个替代方法是尝试使用 ADB 命令来清除包数据,但是当我们使用它时,我们会遇到进程崩溃错误:
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''. Check device logcat for details
Test running failed: Instrumentation run failed due to 'Process crashed.'
我们已尝试在以下级别执行以下操作:
在 class 运行 之前
每次考试前
每次测试后
我们每次都会遇到相同的错误。这是我们正在使用的方法。
public static void clearAppData(){
try {
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("pm clear <packageName>");
}
catch (Exception e){
e.printStackTrace();
}
}
选项:
我们可以在应用程序本身中将数据库重置为 dB 吗?
当 运行 在调试版本中时,让开发团队在应用程序中启用数据库重置功能可能是最简单的。理想情况下,它是初始屏幕上的一个按钮,因此您无需做太多工作即可访问它,除非您的应用程序 returns 恢复到测试之间的先前状态(我在在我面前检查)在这种情况下,代码会变得混乱。
你是对的,你在问题中提到的方法是行不通的;抛弃他们。
我们目前正在为应用程序的某个区域编写 Espresso UI 测试,这需要我们在每次测试后清除应用程序数据
- 我们之前尝试过使用 Android Orchestrator
- 但是,我们之前曾尝试使用带有
clearPackageData=true
标志的 Android 测试协调器;这不适用于 Bitrise 和本地测试执行。例如,我们中的一些人无法 运行 使用此标志在本地进行测试,尽管我们使缓存等无效
-我们的下一个替代方法是尝试使用 ADB 命令来清除包数据,但是当我们使用它时,我们会遇到进程崩溃错误:
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''. Check device logcat for details
Test running failed: Instrumentation run failed due to 'Process crashed.'
我们已尝试在以下级别执行以下操作:
在 class 运行 之前 每次考试前 每次测试后 我们每次都会遇到相同的错误。这是我们正在使用的方法。
public static void clearAppData(){
try {
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("pm clear <packageName>");
}
catch (Exception e){
e.printStackTrace();
}
}
选项: 我们可以在应用程序本身中将数据库重置为 dB 吗?
当 运行 在调试版本中时,让开发团队在应用程序中启用数据库重置功能可能是最简单的。理想情况下,它是初始屏幕上的一个按钮,因此您无需做太多工作即可访问它,除非您的应用程序 returns 恢复到测试之间的先前状态(我在在我面前检查)在这种情况下,代码会变得混乱。
你是对的,你在问题中提到的方法是行不通的;抛弃他们。