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

8

有人能帮我理解testProguardFile的用法吗?假设我有一个debug 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文件,但是如果我只进行单元测试呢?

我想要做的是运行“单元测试”(而不是仪器测试),但是让单元测试apk使用我在项目构建设置中定义的ProGuard规则。

2个回答

11
作为我在博客文章中尝试解释的内容 - 配置Android测试中ProGuard
最初,运行仪器测试有大致2个不同的Gradle任务: assembleReleaseassembleAndroidTest。 前者执行生成应用程序.apk所需的操作。 后者触发仪器测试.apk的组装,该文件将在运行仪器测试时与应用程序一起安装在测试设备上(两者在相同的操作系统进程上下文中运行)。
虽然proguardFiles设置要考虑的ProGuard规则文件列表以生成应用程序.apk ,但testProguardFiles则是针对仪器.apk设置的。
因此,虽然命名很令人困惑,但testProguardFiles对于单元测试没有影响,但对于在启用ProGuard的项目中运行的仪器测试非常重要。

2

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


5
这些规则是针对 APK 的测试方法,还是整个 APK?我的意思是,测试规则是否应包括调试规则? - Anthony
1
@Anthony testProguardFile仅用于测试apk,即创建为app/build/outputs/apk/app-dev-debug-androidTest.apk的apk,该apk调用来自您常规apk的方法。测试规则不需要包括常规调试规则。 - pumpkinpie65

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接