Android - gradle testProguardFile - 它与单元测试相关的目的是什么

Android - gradle testProguardFile - what is its purpose relating to unit tests

谁能帮我了解下testProguardFile的使用。可以说我有调试 buildType,它在 gradle 构建文件中配置如下:

// inside android block
    debug {
        shrinkResources true  // removes unused graphics etc
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        testProguardFile('test-proguard-rules.pro')
    }

那我为什么要提供另一个名为 test-proguard-rules.pro 的 proguard 规则文件进行测试?如果我理解正确,当我进行仪器测试时会生成一个单独的 apk,但如果我只是进行单元测试,情况是否也是如此?

我希望能够做的是 运行 "unit tests"(不是仪器测试)但是让单元测试 apk 使用我在我的项目构建设置中定义的 proguard 规则。

现在我知道它是什么了 testProguadFile ('some proguard file') 为您的测试 apk 提供一个混淆文件以供测试时使用。这允许我们使用 proguard 文件测试我们的应用程序。当您 运行 测试时生成的测试 apk 将使用混淆器进行混淆,然后测试将 运行。这是测试混淆器可能在您的应用程序中创建的任何异常的好方法。

正如我在我的博客中试图解释的那样 post - Configuring ProGuard for Android Instrumentation Tests:

最初,运行ning 仪器测试有 粗略 2 个主要任务,distinct Gradle 个任务: assembleReleaseassembleAndroidTest。前者执行生成应用程序所需的内容 .apk。后者触发仪器测试 .apk 的组装,当仪器测试为 运行 时,它会与应用程序一起安装在测试设备上(在相同 [= 的上下文中两者都是 运行 38=]进程)。

虽然 proguardFiles 设置了在生成应用程序时要考虑的 ProGuard 规则文件列表 .apk,但 testProguardFiles 做同样的事情到仪器 .apk

所以,虽然命名混乱,testProguardFilesunit 测试没有影响,但对 运行ning in [=] 的仪器测试很重要36=] 个项目。