【问题标题】:Android - gradle testProguardFile - what is its purpose relating to unit testsAndroid - gradle testProguardFile - 它与单元测试相关的目的是什么
【发布时间】:2015-08-13 12:42:04
【问题描述】:

谁能帮我理解 testProguardFile 的用法。假设我在 gradle 构建文件中调试了 buildType 及其配置:

// 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 规则。

【问题讨论】:

    标签: android unit-testing android-gradle-plugin proguard


    【解决方案1】:

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

    最初,大致有 2 个主要的、不同用于运行检测测试的 Gradle 任务:assembleReleaseassembleAndroidTest。前者执行生成应用程序.apk 所需的内容。后者触发了仪器测试.apk 的组装,当仪器测试运行时(两者都在同一个操作系统进程的上下文中运行),它会与应用程序一起安装在测试设备上。

    虽然proguardFiles 设置了在生成应用程序.apk 时要考虑的ProGuard 规则文件列表,但testProguardFiles 对检测.apk 执行相同的操作。

    因此,虽然命名令人困惑,testProguardFilesunit 测试没有影响,但它对于在启用 ProGuard 的项目中运行的插桩测试很重要。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这些规则是针对apk的测试方法的,还是针对整个apk的。我的意思是测试规则应该包括调试规则吗?
      • @Anthony testProguardFile 仅用于测试 apk,它被创建为 app/build/outputs/apk/app-dev-debug-androidTest.apk,它从您的常规 apk 调用方法。测试规则不需要包含常规调试规则。
      猜你喜欢
      • 2017-09-08
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 2014-07-12
      相关资源
      最近更新 更多