MockitoJUnitRunner已被弃用

我正在尝试使用@InjectMocks@Mock进行unit testing。

 @RunWith(MockitoJUnitRunner.class) public class ProblemDefinitionTest { @InjectMocks ProblemDefinition problemDefinition; @Mock Matrix matrixMock; @Test public void sanityCheck() { Assert.assertNotNull(problemDefinition); Assert.assertNotNull(matrixMock); } } 

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

MockitoJUnitRunnertypes已被弃用

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

org.mockito.runners.MockitoJUnitRunner现在确实被弃用,你应该使用org.mockito.junit.MockitoJUnitRunner来代替。 正如你所看到的只是包名的改变,类的简单名字仍然是MockitoJUnitRunner

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

移动到MockitoJUnitRunner ,这个类将被Mockito 3删除

你可以试试这个:

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

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

还有一个@Rule选项:

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

或者在Kotlin:

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

你可以试试这个,如果你不想使用@RunWith(MockitoJUnitRunner.class)

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