Android插桩测试:如何自定义报告路径与名称并添加时间戳?
Android插桩测试:给测试报告名称添加时间戳的实现方法
能实现,下面分两种常用场景给出具体操作方案:
一、Gradle构建项目(主流方案)
核心思路是通过配置Android Gradle插件的测试任务,动态生成带时间戳的报告输出路径/文件名。
1. Groovy版build.gradle配置
在模块的build.gradle文件中添加以下配置:
android { // 其他原有配置... // 针对单元测试报告(可选,若仅关注插桩测试可跳过) testOptions { unitTests.all { reports { html.enabled = true html.destination = file("${project.buildDir}/reports/tests/testDebugUnitTest/${new Date().format('yyyyMMdd_HHmmss')}_report") xml.enabled = true xml.destination = file("${project.buildDir}/reports/tests/testDebugUnitTest/${new Date().format('yyyyMMdd_HHmmss')}_report.xml") } } } // 针对插桩测试(Instrumented Tests) tasks.withType(com.android.build.gradle.tasks.ConnectedAndroidTest) { reports { html.enabled = true html.destination = file("${project.buildDir}/reports/androidTests/connected/${new Date().format('yyyyMMdd_HHmmss')}_report") xml.enabled = true xml.destination = file("${project.buildDir}/reports/androidTests/connected/${new Date().format('yyyyMMdd_HHmmss')}_report.xml") } } }
2. Kotlin DSL版build.gradle.kts配置
android { // 其他原有配置... testOptions { unitTests.all { reports { html.required.set(true) html.outputLocation.set(file("${project.buildDir}/reports/tests/testDebugUnitTest/${java.util.Date().format(java.text.SimpleDateFormat("yyyyMMdd_HHmmss"))}_report")) xml.required.set(true) xml.outputLocation.set(file("${project.buildDir}/reports/tests/testDebugUnitTest/${java.util.Date().format(java.text.SimpleDateFormat("yyyyMMdd_HHmmss"))}_report.xml")) } } } tasks.withType<com.android.build.gradle.tasks.ConnectedAndroidTest> { reports { html.required.set(true) html.outputLocation.set(file("${project.buildDir}/reports/androidTests/connected/${java.util.Date().format(java.text.SimpleDateFormat("yyyyMMdd_HHmmss"))}_report")) xml.required.set(true) xml.outputLocation.set(file("${project.buildDir}/reports/androidTests/connected/${java.util.Date().format(java.text.SimpleDateFormat("yyyyMMdd_HHmmss"))}_report.xml")) } } }
配置说明
- 时间戳格式可自定义,比如改成
yyyy-MM-dd_HH-mm-ss更易读 - 每次执行测试任务时,会生成全新的带时间戳报告,不会覆盖旧报告;若需自动清理旧报告,可额外添加Gradle清理任务
- 不同Gradle/AGP版本的配置属性可能略有差异,若报错可调整为对应版本的API(比如旧版本可能用
outputDir替代outputLocation)
二、命令行执行插桩测试场景
如果是通过adb命令直接执行插桩测试,可在测试完成后手动拉取报告并重命名:
# 执行插桩测试 adb shell am instrument -w com.example.app.test/androidx.test.runner.AndroidJUnitRunner # 拉取报告到本地并添加时间戳 adb pull /sdcard/Android/data/com.example.app/files/reports/androidTest/connected/debug/report.html ./$(date +%Y%m%d_%H%M%S)_report.html
注意:设备上的报告路径需根据你的测试配置调整,部分项目可能将报告输出到其他目录。
总结
这类需求属于测试任务配置的延伸,官方文档虽无单独条目,但可通过Gradle任务配置或命令行脚本实现核心目标。
内容的提问来源于stack exchange,提问作者M Rajoy
相关产品推荐
相关产品推荐

