您不能这样做,因为根据规范,您不能在同一个带注释的元素上放置相同的注释两次。
那么,解决方案是什么呢?解决方案是只放一个你不能没有的跑步者,并用其他东西代替另一个。在你的情况下,我想你会删除并按照编程方式做它所做的事情。@RunWith()
MockitoJUnitRunner
事实上,它唯一做的事情是它运行的:
MockitoAnnotations.initMocks(test);
在测试用例的开头。因此,最简单的解决方案是将此代码放入方法中:setUp()
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
我不确定,但也许你应该避免使用flag多次调用此方法:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
然而,更好的是,可重用的解决方案可以用JUnt的规则来实现。
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
现在,只需将以下行添加到测试类中:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
并且您可以使用所需的任何运行器运行此测试用例。