我正在使用android studio和我的应用程序的依赖项我试图添加一个testCompile依赖项,如下所示:http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
当我同步我的文件时,我收到错误:
我不明白发生了什么,我的根文件夹中的gradle构建文件设置为
classpath 'com.android.tools.build:gradle:0.12.+'
,这是最新版本。为什么不识别testCompile?我不想将测试依赖项部署到生产中......任何帮助都会受到赞赏。
编辑:这是项目构建文件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
这是src构建文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 17
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.example.edu.myApp"
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/scribe-1.3.5.jar')
compile files('libs/json_simple-1.1.jar')
compile 'com.google.android.gms:play-services:5.0.77'
// Can't be higher than 19 if we want to support smaller android versions
compile 'com.android.support:appcompat-v7:19.+'
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:support-v4:19.+'
// This Mockito includes all dependancies (great for us)
testCompile "org.mockito:mockito-core:1.9.+"
testCompile 'org.hamcrest:hamcrest-all:1.3'
testCompile 'org.objenesis:objenesis:1.2'
}
答案 0 :(得分:17)
您应该使用androidTestCompile
,而不是testCompile
。如果这是由于通过“项目结构”对话框修改了依赖关系范围,则会出现一个错误,即使用错误的语句来设置依赖关系。我已经为此提交了https://code.google.com/p/android/issues/detail?id=74771。
答案 1 :(得分:9)
一年后我偶然发现了这篇文章。我遇到了这个问题,因为我继承了一个在Gradle构建文件中使用过时的Gradle构建工具设置的旧项目。我通过更新Gradle构建工具解决了这个问题,您需要通过增加Gradle构建文件中的版本号来实现这一点:
import org.apache.tools.ant.filters.ReplaceTokens
task sourcesForRelease(type: Copy) {
from 'src/main/java'
into 'build/adjustedSrc'
filter(ReplaceTokens, tokens: [VERSION: '2.3.1'])
}
task compileForRelease(type: JavaCompile, dependsOn: sourcesForRelease) {
source = sourcesForRelease.destinationDir
classpath = sourceSets.main.compileClasspath
destinationDir = file('build/adjustedClasses')
}
其中X.X是最新的gradle构建工具版本号。现在我使用的是Android Studio v1.2,我的构建工具版本号设置为:
dependencies {
classpath 'com.android.tools.build:gradle:1.X.X'
}
当我尝试实现单元测试时,我遇到了这个问题,现在显然是内置于Android Studio。
希望这可以帮助有同样问题的人。
答案 2 :(得分:3)
我得到了“找不到方法'testcompile()'”错误。问题是我的项目build.gradle文件中有testCompile'junit:junit:4.12'而不是app build.gradle文件。我怎么知道它在错误的文件中?项目文件仅指出“注意:不要在此处放置应用程序依赖项;它们属于单个模块build.gradle文件”。这么简单的回答难怪我找不到它。
答案 3 :(得分:0)
我有一个图书馆项目。我相信Android文档并将testCompile
语句放在我的顶级build.gradle
文件中。事实证明它实际上必须进入我的模块build.gradle
文件。