29

I want to specify dependencies for my tests and after reading the Gradle Dependency Management Basics I though I could just add testCompile calls to my dependency declarations like this:

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'
}

This, however, fails with this error message:

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

Am I missing something here?

(Full gradle build file for reference)

4

2 回答 2

43

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

它的文档说:

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

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

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

更新

截至 2017 年 5 月 DoctestCompile已弃用,您应该使用testImplementation

dependencies {
        androidTestImplementation 'com.google.guava:guava:11.0.2'
}
于 2013-05-19T18:01:20.700 回答
3

只是为了让这个问题得到完整的回答,这就是解决问题所需要的。由于本地测试需要 Junit,而 androidTest 可能需要 guava,因此 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')
    }
    :
}

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

于 2014-03-28T09:55:24.010 回答