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

我想为我的测试指定依赖项,并在阅读Gradle依赖项管理基础知识之后,我可以将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'. 

我在这里错过了什么吗?

( 完整的gradle构建文件供参考 )

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

它的文件说:

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

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

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

更新

截至2017年5月 ,我们不推荐使用testCompile ,您应该使用testImplementation

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

只是为了完整地回答这个问题,这就是解决问题所需要的。 由于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') } : } 

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