You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:52:11