twi*_*wiz 8 classpath mockito android-studio android-gradle-plugin
我正在使用带有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'
////////////////////////////////////////////////
}
Run Code Online (Sandbox Code Playgroud)
然后,我的代码中导致错误的行只是这些导入:
import org.mockito.MockitoAnnotations;
import static org.mockito.Mockito.*;
Run Code Online (Sandbox Code Playgroud)
我在网上找到的解释都说CLASSPATH中缺少.jar.据我所知,Gradle应该自动将依赖项添加到CLASSPATH.它是否正确?
为了确保我不必手动添加jar,我还尝试在我的.bashrc文件中更新CLASSPATH ,但这不起作用:
export CLASSPATH=/home/myusername/my/jar/path/mockito-all-1.9.5.jar:$CLASSPATH
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
如果您想使用graider in gradle运行单元测试,则将其添加到build.gradle文件中的正确方法是:
testCompile 'org.mockito:mockito-core:1.10.19'
Run Code Online (Sandbox Code Playgroud)
请注意它是否testCompile存在androidTestCompile
随着androidTestCompile你正在使用mockito进行Android仪器测试,而不是单元测试.
小智 1
我按照几个网站的建议尝试了几种不同的方法来安装 Mockito,但 Gradle 构建或测试构建仍然出现错误。我应该注意我的 Android Studio 版本是0.6.1. 这最终对我有用:
我自己下载了 jar 文件并将它们添加到我的项目结构中的包中../app/libs::
然后我去File> Project Structure... 并点击了Dependencies tab。
从这里我可以为三个 jar 文件中的每一个添加文件依赖项。添加后,我将范围更改为测试编译,以防止它们包含在我的 APK 中。在 Gradle Sync 和 Project Clean 之后,我能够毫无问题地模拟类。
这种方法可能比其他方法更手动,但最终比我能找到的任何其他建议简单得多。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
6629 次 |
| 最近记录: |