您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

jUnit中的多个RunWith语句

jUnit中的多个RunWith语句

您不能执行此操作,因为根据规范,您不能将相同的注释两次放置在相同的注释元素上。

那么,解决方案是什么?解决的办法是只放一个@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();

您可以与任何所需的运行程序一起运行此测试用例。

其他 2022/1/1 18:15:19 有522人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶