使用Gradle Android构建系统指定测试依赖项

时间:2013-05-19 17:47:46

标签: android gradle android-studio

我想为我的测试指定依赖项,并且在阅读Gradle Dependency Management Basics之后我虽然可以添加testCompile调用我的依赖声明,如下所示:

dependencies {
    compile group: 'com.squareup.dagger', name: 'dagger', version: '1.0.0'


    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile group: 'com.squareup', name: 'fest-android', version: '1.0.1'
}

但是,此错误消息失败:

> Could not find method testCompile() for arguments [{group=junit, name=junit, version=4.11}] on project ':simstatus'.

我在这里错过了什么吗?

Full gradle build file for reference

2 个答案:

答案 0 :(得分:40)

android构建系统不使用标准的Gradle Java插件。

Its documentation说:

  

如前所述,主要的sourceSet旁边是androidTest sourceSet,默认位于src / androidTest /

     

此外,sourceSet可以配置为具有自己的依赖项。   默认情况下,应用程序及其自身的依赖项将添加到测试应用程序类路径中,但可以使用

进行扩展
dependencies {
    androidTestCompile 'com.google.guava:guava:11.0.2'
}

<强>更新

  

As of May 2017 DoctestCompile已被弃用,您应该这样做   使用testImplementation

dependencies {
        androidTestImplementation 'com.google.guava:guava:11.0.2'
}

答案 1 :(得分:3)

只是为了完整地回答这个问题,这就是解决问题所需要的。由于Junit需要进行本地测试,并且因为androidTest可能需要番石榴,所以android DSL应该包含这个:

android {
    :
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
                :
        }
        test {
            java.srcDirs = ['src/test/java']
            resources.srcDirs = ['src/test/resources']
                :
        }
        androidTest.setRoot('tests')
    }
    :
}

:表示您需要的其他陈述。另请注意,文件夹可以是上述文件夹以外的文件夹。