如何在生成签名apk之前运行测试?

use*_*386 6 gradle android-testing android-studio android-gradle-plugin

我认为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'
}
Run Code Online (Sandbox Code Playgroud)

我没有写testOption.

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

在此输入图像描述

tha*_*sma 6

要运行所有可用的测试,建立一个版本时,交任务,即构建释放(例如assembleRelease)取决于测试任务:

android {
    // ...
}
afterEvaluate {
    assembleRelease.dependsOn testReleaseUnitTest, connectedAndroidTest
}
Run Code Online (Sandbox Code Playgroud)

afterEvaluate评估后(已创建的机器人任务时)关闭执行.此时android任务可以作为变量引用.

而不是testReleaseUnitTest你可以使用test,它运行所有变种的单元测试.

请记住,默认情况下release,您的应用版本(使用版本)不会进行任何检测测试 assembleRelease.因此,在上面的示例中,仅connectedAndroidTest运行debug版本的检测测试.

  • 嗯,我发现当我这样写 **assembleFlavorRelease dependentOn test** 时,它就起作用了。我认为每个 **assembleFlavorRelease** 依赖于测试都不是一个好主意。我应该怎么做? (2认同)

jud*_*ole 2

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

sign.dependsOn test
Run Code Online (Sandbox Code Playgroud)

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