2013-05-19 43 views
24

我要为我的测试和阅读Gradle Dependency Management Basics后,我虽然我可以只添加testCompile调用我的依赖声明这样的指定依赖:指定测试的依赖与摇篮Android编译系统

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

回答

37

Android编译系统不使用标准的摇篮Java插件。

Its documentation说:

如前所述,毗邻主要sourceSet是androidTest sourceSet,默认情况下位于SRC/androidTest/

此外,sourceSet可以被配置为拥有自己的依赖。 默认情况下,应用程序和自己的依赖将被添加到测试应用程序的类路径,但是可以使用

dependencies { 
    androidTestCompile 'com.google.guava:guava:11.0.2' 
} 
延长
+9

这是正确的。我们正在为本地jUnit测试(例如Robolectric)保留“测试”(作为源集或依赖范围) –

+0

@Xav:由于Android的缘故,Gradle的使用似乎飞涨。谢谢你(我迫不及待地想到Maven被Gradle黯然失色),并且很高兴看到Android SDK Tech Lead回答StackOverflow上的问题! –

+0

我错过了文档中的这一部分。非常感谢@JBNizet。 – passy

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

的:意味着你需要其他的语句。另请注意,文件夹可以是上述以外的文件夹。

+0

从阅读其他评论这些是默认值,虽然他们不是? – RichieHH

+0

是的,或者至少他们应该。不过,如果没有这些依赖项,添加依赖到testCompile是不可能的。至少对于我来说。这就是问题所在。 – javabeangrinder