【问题标题】:Gradle DSL method not found: test()未找到 Gradle DSL 方法:test()
【发布时间】:2015-09-25 09:04:45
【问题描述】:

尝试在 Android-Studio 1.2 中我的 build.gradle 文件的末尾添加以下代码(如 this post 中所述):

test {
    testLogging {
        events "passed", "skipped", "failed", "standardOut", "standardError"
    }
}

但是得到了:

Error:(40, 0) Gradle DSL method not found: 'test()'
Possible causes:
- The project 'xxxxx' may be using a version of Gradle that does not contain the method.
- The build file may be missing a Gradle plugin.

我错过了什么?

【问题讨论】:

  • 是安卓的?不应该是androidTest吗?
  • @Opal,刚刚尝试使用androidTest,但产生了相同的错误(除了test(),它是androidTest()
  • 你应用插件了吗?听起来好像没有安装扩展程序。
  • @BenManes 哪个插件?我有apply plugin: 'com.android.application'。我尝试添加apply plugin: 'java' 和/或apply plugin: 'groovy',但这些显然与android 不兼容。
  • 您能否发布一个显示此错误的最小完整构建文件?这将有助于我们调试。

标签: unit-testing android-studio gradle


【解决方案1】:

gradle 文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html

表示'test'任务来源于java插件:

apply plugin: 'java' // adds 'test' task

正如您所说,这与 com.android.application 插件冲突。

解决方案

我终于想出了如何做到这一点。您可以将其应用于所有类型为“测试”的任务,而不是将日志更改应用于测试任务(仅可从 java 插件获得),如下所示:

//Test Logging
tasks.withType(Test) {
    testLogging {
        events "started", "passed", "skipped", "failed"
    }
}

现在,当您运行./gradlew test 时,您应该在处理测试时记录这些事件。

【讨论】:

  • 摇滚兄弟!仅供未来我参考:将其放在任何其他闭包之外(即不在 android{} 块内)
  • @ShubhamChaudhary 您可以将其包含在android.testOptions.unitTests.all 中,然后您不需要先过滤任务(即省略第一行)。
猜你喜欢
  • 2019-09-29
  • 2015-05-19
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多