【问题标题】:How can I run test before generate signed apk?如何在生成签名的 apk 之前运行测试?
【发布时间】:2016-11-05 16:51:20
【问题描述】:

我认为 Android Studio 会在生成签名 apk 之前运行测试。

但是 AS 并没有为我这样做。打包我的 apk 之前不好,我需要自己运行测试。

我不确定 dependsOn 或其他方式是否可以帮助我。我不确定我的 build.gradle 是否有错误。

gradle中的一些相关代码可能是这样的:

defaultConfig {
    applicationId "com.xx.xx"
    versionCode getDefaultVersionCode()
    minSdkVersion 19
    targetSdkVersion 19
}
dependencies {
    testCompile 'org.robolectric:robolectric:3.0'
    testCompile 'junit:junit:4.12'
}

testOption不是我写的。

我的目录是这样的(前面的内容是包名):

【问题讨论】:

    标签: android-studio gradle android-gradle-plugin android-testing


    【解决方案1】:

    我不熟悉 Android 开发,但我认为您可以通过在 build.gradle 中的某个位置添加它来实现您的意图:

    sign.dependsOn test
    

    其中 sign 是 apk 任务的签名(与 gradle tasks 中的名称相同)。

    【讨论】:

      【解决方案2】:

      要运行所有可用的测试,在构建版本时,使构建版本的任务(例如assembleRelease)依赖于测试任务:

      android {
          // ...
      }
      afterEvaluate {
          assembleRelease.dependsOn testReleaseUnitTest, connectedAndroidTest
      }
      

      afterEvaluate 闭包在评估后执行(当 Android 任务已创建时)。此时android任务可以作为变量引用。

      您可以只使用test 而不是testReleaseUnitTest,它会为所有变体运行单元测试。

      请记住,默认情况下,您的应用程序的 release 版本(使用 assembleRelease 构建)没有仪器测试。所以在上面的例子中,connectedAndroidTest 只运行debug 版本的检测测试。

      【讨论】:

      • “test”这个名字总是“test”还是我自己命名的? assembleRelease.dependsOn test 已运行,但 generate signed apk 没有停止?
      • 嗯,我发现当我像这样写 assembleFlavorRelease dependsOn test 时,它起作用了。我认为每个 assembleFlavorRelease 取决于测试不是好主意。我应该怎么做?
      • 这行得通吗?来不及了。即使测试失败,测试也不会运行和构建 AAB。
      • 谢谢,是否也可以在调试构建之前运行测试?
      猜你喜欢
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2016-04-24
      • 1970-01-01
      相关资源
      最近更新 更多