如何在每个"发布之前使用gradle执行Android测试"建立?

时间:2016-09-14 16:54:56

标签: android android-studio gradle android-gradle build.gradle

我在Android Studio的AndroidTests目录下有一些Android检测测试。当然我可以手动执行测试但是我需要在每次构建之后执行套件中的所有测试("发布"构建类型,而不是在正常的调试构建期间)。我需要这样做,因为我想在发布新应用程序的apk之前验证新代码。怎么做?我谷歌但我还没有找到合适的解决方案。

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

最后我设法做到了。我已将以下配置添加到我的android studio项目中的build.gradle文件中:

// execute android tests before realising a new apk
tasks.whenTaskAdded { task ->
    if (task.name == 'assembleRelease')
        task.dependsOn('connectedAndroidTest')
}

android {
signingConfigs {
    release {
        keyAlias 'key'
        keyPassword 'password'
        storeFile file('/path/to/release_keystore.jks')
        storePassword 'password'
    }

}
buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

在这样做之后,我能够在构建发布版apk时运行所有的android测试。如果测试失败,则不构建apk。

答案 1 :(得分:2)

通常,您可以使用dependsOn方法为任务定义依赖关系。

例如:

task A << {
    println 'Hello from A'
}

task B << {
    println 'Hello from B'
}

B.dependsOn A

您将获得

> gradle -q B
Hello from A
Hello from B

在您的情况下,您可以指定:

assemble.dependsOn test

如果您只想为发布版本指定依赖项:

assembleRelease.dependsOn test

使用:

connectedAndroidTest在连接的仿真器或设备上运行测试 test在您的本地主机上运行单元测试。

答案 2 :(得分:0)

我认为你应该深入研究某个话题:Continuous Integration

这将允许您在每次构建或提交后运行测试套件,构建变体,在Google Play上发布等等...从经典Jenkins CI开始,这可能不是最精致和易于使用的,我的意思是用户友好的工具,但与TravisCircle CI相比,它提供了巨大的配置可能性,不错的应用社区,并且可以免费使用。

从这篇文章开始:http://www.vogella.com/tutorials/Jenkins/article.html

其他工具:我已经在我的Github项目中使用Travis,但Circle CIGreen House CI可能也是不错的选择。

希望它会有所帮助