Android单元测试无法找到Mockito包

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)

我究竟做错了什么?

Luc*_* L. 7

如果您想使用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::

  • dexmaker-1.0.jar
  • dexmaker-mockito-1.0.jar
  • 模拟-all-1.9.5.jar

然后我去File> Project Structure... 并点击了Dependencies tab

从这里我可以为三个 jar 文件中的每一个添加文件依赖项。添加后,我将范围更改为测试编译,以防止它们包含在我的 APK 中。在 Gradle Sync 和 Project Clean 之后,我能够毫无问题地模拟类。

这种方法可能比其他方法更手动,但最终比我能找到的任何其他建议简单得多。希望这可以帮助。