【问题标题】:How can I enforce that unit tests are run on Gradle Android build?如何强制在 Gradle Android 构建上运行单元测试?
【发布时间】:2016-03-08 07:41:25
【问题描述】:

你好优秀的安卓开发者!

(我知道这是一个非常基本的问题。我仍然在围绕 Gradle 和 Android 进行思考,而我在谷歌上搜索这个特定的问题一无所获。)

我已经编写了我的第一个单元测试,并且使用它运行良好

./gradlew test

我不确定是什么使它运行,因为测试目录 (src/test/java/tld/mycompany/myapp/MyTest.java) 不在 build.gradle 或 app/build.gradle 中,但我'我假设它是由 Android Gradle 插件中的魔术执行的。无论哪种方式,当我选择“重建项目”时,测试都不包含在构建中 - 如果我故意中断测试,构建仍然会成功。

如何让构建运行测试并在测试失败时失败?

【问题讨论】:

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


    【解决方案1】:

    “重建项目”只是下载依赖项并编译代码。如果您想正确构建项目,请使用

    ./gradlew build
    

    正如您所说,即使您没有在任何地方声明它们,测试也会运行的原因是 android gradle 插件的一部分。 /test/ 和 /androidTest/ 中的测试都是由于预定义的构建类型而执行的。 使用 ./gradlew build,将执行所有现有的构建类型。

    【讨论】:

      【解决方案2】:

      如果您查看here,您将看到 java 的 gradle 任务之间的关系(这是它在 Android 中使用的)。

      正如 tknell 所说,test 和 androidTest 都被执行,因为它们在导入的 android 插件中被“标记”为测试目录。

      “重建项目”任务所做的是查看 build.gradle 文件并查看声明了哪些依赖项等。基于此,它为 Android Studio 构建了它的项目。这(据我所知)不运行任何真正的 gradle 任务。

      【讨论】:

        【解决方案3】:

        您不能通过运行单元测试来“重建项目”。但是您可以创建自定义运行来检查单元测试。通过Run > Edit Configuration。 你可以在这里看到更多。 http://rexstjohn.com/unit-testing-with-android-studio/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-17
          • 2019-01-15
          • 2023-03-24
          • 2019-02-22
          • 1970-01-01
          • 1970-01-01
          • 2014-05-22
          相关资源
          最近更新 更多