如何在android中使用groovy创建IntegrationTest源代码集?

时间:2017-03-14 18:12:10

标签: android unit-testing gradle groovy build.gradle

我正在尝试将多个测试目录添加到我的android项目中。理想情况下,我喜欢unite测试目录和集成测试目录。我在Spock中进行了所有的联合测试,并且我想使用Spock或robospock进行所有的集成测试。问题是,在我的Gradle构建文件中,当我尝试执行此操作时,我不断收到错误:

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

我收到此错误:

  

错误:(77,0)无法为参数找到方法groovy()   [build_c07qe1tzsdi2876irgi5e3c6i $ _run_closure2 $ _closure9 $ _closure12 $ @ _closure13 7f835189]   关于类型的源集合集成测试   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包装器之外尝试过它们无济于事。

我真的非常感谢任何能够指责我朝正确方向前进的人。我不知道还有什么可以尝试的。

1 个答案:

答案 0 :(得分:2)

原来我使用的是旧版本的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