我正在使用带有Gradle的Android Studio,我正在尝试在单元测试中使用Mockito。问题是我在运行测试时收到以下错误:
错误:任务':app:compileDebugJava'执行失败。
编译失败;有关详细信息,请参阅编译器错误输出。
错误:(9,19)错误:包org.mockito不存在
错误:(11,26)错误:包org.mockito不存在
错误:(19,9)错误:找不到符号变量MockitoAnnotations
我的build.gradle
文件只不过是添加了Mockito依赖项的默认文件:
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:appcompat-v7:19.+'
////////////////////////////////////////////////
// These are the only lines I added:
androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'
////////////////////////////////////////////////
}
然后,我的代码中导致错误的行只是这些导入:
import org.mockito.MockitoAnnotations;
import static org.mockito.Mockito.*;
我在网上找到的解释都说CLASSPATH中缺少.jar。据我所知,Gradle应该自动将依赖项添加到CLASSPATH。这是对的吗?
为了确保我不必手动添加jar,我还尝试更新.bashrc
文件中的CLASSPATH,但这不起作用:
export CLASSPATH=/home/myusername/my/jar/path/mockito-all-1.9.5.jar:$CLASSPATH
我做错了什么?
答案 0 :(得分:6)
如果您想使用graider in gradle运行单元测试,则将其添加到build.gradle
文件的正确方法是:
testCompile 'org.mockito:mockito-core:1.10.19'
请注意,它是testCompile
而不是androidTestCompile
使用androidTestCompile
,您可以将mockito用于Android测试测试,而不是用于单元测试。
答案 1 :(得分:2)
当我使用“release”构建类型时,我遇到的问题完全相同。尝试切换到“调试”。
答案 2 :(得分:1)
我尝试了几种不同的方法来安装Mockito,遵循几个站点的建议,但继续在Gradle构建或测试构建时出错。我应该注意,我的Android Studio版本是0.6.1
。这是最终为我工作的:
我自己下载了jar文件,并将它们添加到我的项目结构中的包中:../app/libs
:
然后我转到File> Project Structure...
并点击了Dependencies tab
。
从这里我可以为三个jar文件中的每一个添加文件依赖项。添加后,我将Scope更改为Test编译,以防止它们被包含在我的APK中。在Gradle Sync和Project Clean之后,我能够毫无问题地模拟课程。
这种方法可能比其他方法更加手动,但最终比我能找到的任何其他建议简单得多。希望这会有所帮助。
答案 3 :(得分:0)