MockitoJUnitRunner已弃用

Alb*_*iks 61 java deprecated mockito

我正在尝试用@InjectMocks和进行单元测试@Mock.

@RunWith(MockitoJUnitRunner.class)
public class ProblemDefinitionTest {

    @InjectMocks
    ProblemDefinition problemDefinition;

    @Mock
    Matrix matrixMock;    

    @Test
    public void sanityCheck() {
        Assert.assertNotNull(problemDefinition);
        Assert.assertNotNull(matrixMock);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我不包含@RunWith注释,则测试失败.但

不推荐使用MockitoJUnitRunner类型

我正在使用Mockito 2.6.9.我该怎么办呢?

Nic*_*tto 123

org.mockito.runners.MockitoJUnitRunner现在确实已经弃用了,你应该使用它org.mockito.junit.MockitoJUnitRunner.正如您所看到的,只有包名已更改,类的简单名称仍然是MockitoJUnitRunner.

摘录自org.mockito.runners.MockitoJUnitRunner:javadoc :

移至MockitoJUnitRunner,此课程将与Mockito 3一起删除


Mat*_*W90 8

你可以试试这个:

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}
Run Code Online (Sandbox Code Playgroud)

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


git*_*gin 5

还有一个@Rule选项:

@Rule 
public MockitoRule rule = MockitoJUnit.rule();
Run Code Online (Sandbox Code Playgroud)

或在科特林:

@get:Rule
var rule = MockitoJUnit.rule()
Run Code Online (Sandbox Code Playgroud)