android - 如何在 android 中使用 groovy 制作 integrationTest 源集?

标签 android unit-testing gradle groovy build.gradle

我正在尝试将多个测试目录添加到我的 android 项目中。理想情况下,我想要一个联合测试目录和一个集成测试目录。我在 Spock 中进行所有联合测试,并且我想使用 Spock 或 robospock 进行所有集成测试。问题是,在我的 Gradle 构建文件中,当我尝试这样做时,我不断收到错误消息:

android {
    sourceSets{
            integrationTest {
                groovy {
                    test.groovy.srcDir 'src/integrationTest/groovy'
                }
            }
        }
    }

我收到这个错误:

Error:(77, 0) Could not find method groovy() for arguments [build_c07qe1tzsdi2876irgi5e3c6i$_run_closure2$_closure9$_closure12$_closure13@7f835189] on source set integration test of type com.android.build.gradle.internal.api.DefaultAndroidSourceSet.

这在我使用 java 时有效:

android {
    sourceSets{
        integrationTest {
            java {
                test.java.srcDir 'src/integrationTest/java'
            }
        }
    }
}

我也试过 https://github.com/groovy/groovy-android-gradle-plugin :

androidGroovy {
        sourceSets {
            integrationTest {
                groovy {
                    srcDirs += 'src/integrationTest/groovy'
                }
            }
        }
    }

我正在使用 'com.android.tools.build:gradle:2.3.0',我已经成功地让 spock 测试在测试目录中运行,所以我的 groovy 配置是工作,我只是无法添加更多常规测试目录。

我在这一个上得到了与上面相同的错误。我也在 android 包装器之外尝试过它们,但无济于事。

我非常感谢至少能为我指明正确方向的任何人。我不确定还能尝试什么。

最佳答案

原来我使用的是旧版本的 android groovy 编译器。你需要这样做: apply plugin: 'groovyx.android' 这是 groovyx.grooid.groovy-android 的新名称,你需要将这个类路径添加到你的依赖。请注意,这可能应该放在您的根项目依赖项中,而不是类依赖项中,因为它需要在 apply 语句之前发生。

dependencies {
    classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:1.1.0'
}

然后你可以这样做:

android {
    sourceSets {
        test.java.srcDirs += 'src/integration-test/groovy'
        test.java.srcDirs += 'src/unit-test/groovy'
    }
}

我只花了两天时间就弄明白了。 :D

关于android - 如何在 android 中使用 groovy 制作 integrationTest 源集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42793532/

相关文章:

Gradle - 只有在目录中的代码发生更改时才执行任务

android - 在 Android Studio 中为 Kotlin 模块配置 "build.gradle"

Gradle:如何在多个版本中包含库以满足依赖关系

Android:位置监听器

java - 字符串设置为 ArrayList?

java - admob 智能横幅需要位于应用程序底部(通过 java)

android - 无法对 Android 模拟器进行地理修复

java - 如何为一组方法编写单元测试,其中每个方法都依赖于其他方法?

python-2.7 - Python 2.7中以二进制模式读取模拟文件

c++ - 如何组织夹具数据并从 C/C++ 中的测试访问它们