Android studio Android单元测试可以';找不到Mockito包
我将Android Studio与Gradle一起使用,并尝试在单元测试中使用Mockito。问题是,我在运行测试时收到以下错误: 错误:任务“:app:compiledBugJava”的执行失败 编译失败;有关详细信息,请参阅编译器错误输出 错误:(9,19)错误:包org.mockito不存在 错误:(11,26)错误:包org.mockito不存在 错误:(19,9)错误:找不到符号变量MockitoAnnotations 我的Android studio Android单元测试可以';找不到Mockito包,android-studio,classpath,mockito,android-gradle-plugin,Android Studio,Classpath,Mockito,Android Gradle Plugin,我将Android Studio与Gradle一起使用,并尝试在单元测试中使用Mockito。问题是,我在运行测试时收到以下错误: 错误:任务“:app:compiledBugJava”的执行失败 编译失败;有关详细信息,请参阅编译器错误输出 错误:(9,19)错误:包org.mockito不存在 错误:(11,26)错误:包org.mockito不存在 错误:(19,9)错误:找不到符号变量MockitoAnnotations 我的build.gradle文件只不过是添加了Mockito依赖项
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.*;
我在网上找到的解释都说类路径中缺少.jar。据我所知,Gradle应该自动将依赖项添加到类路径中。这是正确的吗 为了确保不必手动添加jar,我还尝试更新
.bashrc
文件中的类路径,但这不起作用:
export CLASSPATH=/home/myusername/my/jar/path/mockito-all-1.9.5.jar:$CLASSPATH
我做错了什么?我按照几个网站的建议尝试了几种不同的安装Mockito的方法,但在Gradle build或test build中仍然存在错误。我应该注意,我的Android Studio版本是
0.6.1
。以下是最终对我有效的方法:
我自己下载了jar文件,并将它们添加到我的项目结构中的一个包中:。/app/libs
:
- dexmaker-1.0.jar
- dexmaker-mockito-1.0.jar
- mockito-all-1.9.5.jar
文件>项目结构…
并单击依赖项选项卡
从这里,我可以为三个jar文件中的每一个添加文件依赖项。添加后,我将作用域更改为Test compile,以防止它们包含在我的APK中。在一次Gradle同步和一个项目清理之后,我能够毫无问题地模拟类
这种方法可能比其他方法更为手动,但最终比我能找到的任何其他建议都要简单。希望这有帮助。如果您想在gradle中使用mockito运行单元测试,将其添加到
build.gradle
文件的正确方法是:
testCompile 'org.mockito:mockito-core:1.10.19'
请注意,它是testCompile
,而不是androidTestCompile
使用
androidTestCompile
可以使mockito用于Android工具测试,而不是单元测试 我也遇到了同样的问题,这是一个非常简单的解决方案
您可能需要同步渐变依赖项
在右边的工具栏上,您将看到渐变工具栏(如果没有,您可以在顶部菜单栏的
View>Tools Window>gradle
下找到它)。单击符号,它将为您下载。与我使用“发布”构建类型时遇到的问题完全相同。尝试切换到“调试”。我发现如果我将androidTestCompile
更改为compile
,一切都会正常工作。我不确定这是否是正确的用法。我是否完全误解了androidTestCompile的目的?请小心,因为compile会将mockito包含到您的apk中。这不是你的意图,我想你有什么样的单元测试-机器人的还是工具的?因为Mockito依赖性。这为我解决了它,谢谢。只需一点更新:使用testImplementation
而不是testCompile
。