Android Macro Benchmark能否在不清除应用数据的情况下运行?
Android Macro Benchmark 非清数据模式测试配置方法
默认配置下,Macro Benchmark 每次执行测试前会自动清除被测应用的所有私有数据,这个行为可以手动关闭,完全支持在保留应用数据的前提下执行测试。
- 配置方式:在编写基准测试逻辑时,将
measureRepeated作用域内的clearPackageData参数设置为false即可关闭自动清数据逻辑,代码示例:
@get:Rule val macrobenchmarkRule = MacrobenchmarkRule() @Test fun startupBenchmark() { macrobenchmarkRule.measureRepeated( packageName = "com.your.app.package", metrics = listOf(StartupTimingMetric(), FrameTimingMetric()), iterations = 5, startupMode = StartupMode.COLD, // 关闭每次测试前自动清除应用数据 clearPackageData = false ) { pressHome() startActivityAndWait() // 编写常规测试交互逻辑 } }
针对许可协议前置的场景,有两种可选适配方案:
- 保持
clearPackageData = false配置:先单独执行一次初始化用例,启动应用后通过脚本自动走完许可协议同意流程,后续所有基准测试执行时都会保留这个状态,不会再弹出协议弹窗中断测试。 - 保持默认
clearPackageData = true配置(推荐用于冷启动指标测试场景):在测试启动后的交互逻辑里加入自动识别、点击许可协议同意按钮的步骤,每次清数据启动后自动完成协议确认,既不影响冷启动等场景的指标准确性,也不会被弹窗中断流程,示例逻辑:
// 启动应用后自动处理协议弹窗 val licenseAgreeButton = device.findObject(By.res("协议同意按钮的资源ID")) if (licenseAgreeButton.exists()) { licenseAgreeButton.click() device.waitForIdle() }
注意:关闭
clearPackageData后,应用本地缓存、已授权权限、登录态等所有本地数据都会在多轮测试间保留,测试得到的启动、性能指标会和首次安装启动的纯净状态有偏差,仅适合测试用户长期使用后的应用性能场景。
内容的提问来源于stack exchange,提问作者Chanson
相关产品推荐
相关产品推荐

