为什么我会出现错误信息“package org.mockito.runners does not exist”?

14

我已经解决了 require 依赖问题。

testCompile 'org.mockito:mockito-core:1.10.19'

然后我将我的测试代码放到/src/test/java/目录中。

之后我尝试启动这个测试。

import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

public class PresenterActivityAcceptNotAcceptTest {

@Test
public void emailValidator_CorrectEmailSimple_ReturnsTrue() {
    boolean dd = true;
    assertThat(dd, is(true));
} 

它正常工作,但如果我添加与Mock库相关的任何内容

例如@RunWith

    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.runners.MockitoJUnitRunner;

    import static org.hamcrest.CoreMatchers.is;
    import static org.hamcrest.MatcherAssert.assertThat;

@RunWith(MockitoJUnitRunner.class)
public class PresenterActivityAcceptNotAcceptTest {


    @Test
    public void emailValidator_CorrectEmailSimple_ReturnsTrue() {
        boolean dd = true;
        assertThat(dd, is(true));
    }

我遇到了这样的错误

Error:Execution failed for task   ':Application:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Error:(10, 10) error: cannot find symbol class MockitoJUnitRunner
Error:(5, 27) error: package org.mockito.runners does not exist
/home/aleksey/Downloads/NTZ/FittingRoom/Application/src/test/java/com/fittingroom/newtimezone/presenters/PresenterActivityAcceptNotAcceptTest.java

我做错了什么?

如果我忘记了什么,请随时问我。

提前感谢!


检查所需的依赖项及其范围。 - P S M
@TimothyTruckle 不是这个问题... 我在编译过程中遇到了这个错误... 它是什么意思? - Sirop4ik
尝试将testCompile替换为androidTestCompile。 - P S M
@TimothyTruckle,不幸的是我没有这样的按钮(我已经查看了所有的工作室组件,最终都没有找到任何...)。 - Sirop4ik
@TimothyTruckle,最终我已经解决了这个问题,但是我非常想知道你的看法...在IDE编译过程中出现了错误。 - Sirop4ik
显示剩余17条评论
6个回答

11
Baeldung的文章所述,从Mockito版本2.2.20开始,MockitoJUnitRunner的包已更改。因此,请更改:

import org.mockito.runners.MockitoJUnitRunner;

收件人:

import org.mockito.junit.MockitoJUnitRunner;

作为惯例,在您的build.gradle中必须导入mockito-core库:

如常,您需要在build.gradle中导入mockito-core库:

dependencies {
    testImplementation 'org.mockito:mockito-core:4.2.0'
}

作为一个附注,如果您使用Matchers,您还需要更改导入。例如:

从:

import static org.mockito.Matchers.any;

收件人:

import static org.mockito.Mockito.any;

这是我认为的正确答案。谢谢。 - helvete

7

2

我遇到了相同的问题。尝试实现developer.android文档中的示例。

通过在build.gradle中将org.mockito版本更改为当时最新版本来解决:

dependencies {
    testImplementation 'org.mockito:mockito-core:2.28.2'
}

1

打开文件 > 项目结构...

然后手动将其添加为库依赖项

enter image description here


0

当我尝试在src/androidTest/java/中编写instrumentalTests时,我也遇到了这个异常,但默认情况下mockito的依赖范围设置为单元测试实现(您可以在文件 => 项目结构 => 模块 => 依赖项中看到)。我只是将此参数更改为测试实现,然后它就可以工作了!

enter image description here


-1
你的项目看起来像这样吗?: 在此输入图片描述


1
看起来你使用的是Eclipse...我使用的是AndroidStudio。 - Sirop4ik
@AlekseyTimoshchenko 是的,我使用Eclipse。但是AS可能也有“gradle personality”(或者他们称之为什么)用于项目。只要您在AS中拥有一个“纯Java”项目,它就不会跟踪您对gradle构建文件的更改。 - Timothy Truckle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接