Android单元测试无法找到Mockito包

时间:2014-05-22 23:10:32

标签: android-studio classpath mockito android-gradle

我正在使用带有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

我做错了什么?

4 个答案:

答案 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

  • dexmaker-1.0.jar
  • dexmaker-的Mockito-1.0.jar
  • 的Mockito-全1.9.5.jar

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

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

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

答案 3 :(得分:0)

我有同样的问题,这是一个非常简单的解决方法;

您可能需要同步gradle依赖项。

在右侧的栏上,您会看到gradle工具栏(如果不是您在顶部菜单栏中的View > Tools Window > Gradle下找到它)。点击refresh符号,它会为您下载。