MockitoJUnitRunner已经被弃用。

81

我正在尝试使用@InjectMocks@Mock进行单元测试。

@RunWith(MockitoJUnitRunner.class)
public class ProblemDefinitionTest {

    @InjectMocks
    ProblemDefinition problemDefinition;

    @Mock
    Matrix matrixMock;    

    @Test
    public void sanityCheck() {
        Assert.assertNotNull(problemDefinition);
        Assert.assertNotNull(matrixMock);
    }
}

当我不包括@RunWith注释时,测试会失败。但是

MockitoJUnitRunner 类型已被弃用。

我正在使用 Mockito 2.6.9。我该怎么做?

6个回答

159

我曾经想过为什么我的不被弃用;-) - Top-Master

12

你可以尝试这样做:

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}

因为您添加了@Before注释,所以您的模拟对象可以被多次创建和记录,并且在所有测试中您都可以为对象提供新属性。但是,如果您想要为模拟对象记录一次行为,请添加@BeforeClass注释。


6

还有一个@Rule选项:

@Rule 
public MockitoRule rule = MockitoJUnit.rule();

或者在 Kotlin 中:

@get:Rule
var rule = MockitoJUnit.rule()

3

我成功解决了这个问题,当我更新我的依赖到最新版本时:

def mockito_version = '2.28.2'

// For local unit tests on your development machine
testImplementation "org.mockito:mockito-core:$mockito_version"

// For instrumentation tests on Android devices and emulators
androidTestImplementation "org.mockito:mockito-android:$mockito_version"

然后我使用替换命令(Mac:cmd + Shift + R Windows:Ctrl + Shift + R)更改了导入模块,从

import org.mockito.runners.MockitoJUnitRunner; 

为了

import org.mockito.junit.MockitoJUnitRunner;

1
您可以尝试导入以下内容:
import org.mockito.runners.MockitoJUnitRunner;

此外,如果您正在使用 Eclipse,只需按下 Ctrl + Shift + O 即可自动导入它。

0
JunitRunner运行成功,谢谢大家。

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