Android studio Android单元测试可以';找不到Mockito包

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依赖项

我将Android Studio与Gradle一起使用,并尝试在单元测试中使用Mockito。问题是,我在运行测试时收到以下错误:

错误:任务“:app:compiledBugJava”的执行失败

编译失败;有关详细信息,请参阅编译器错误输出

错误:(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.*;

我在网上找到的解释都说类路径中缺少.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