首页 文章

如何在Mockito中使用软断言?

提问于
浏览
0

我知道我们可以使用ErrorCollectorsoft assertions(AssertJ或TestNG),它们不会立即使单元测试失败 .

它们如何与Mockito断言一起使用?或者,如果他们不能,Mockito会提供任何替代方案吗?


代码示例

verify(mock).isMethod1();
verify(mock, times(1)).callMethod2(any(StringBuilder.class));
verify(mock, never()).callMethod3(any(StringBuilder.class));
verify(mock, never()).callMethod4(any(String.class));

问题

在此代码片段中,如果验证失败,则测试将失败,这将中止剩余的 verify 语句(可能需要多次测试运行,直到显示此单元测试的所有故障,这非常耗时) .

1 回答

  • 0

    从Mockito 2.1.0开始,您可以使用VerificationCollector规则来收集多个验证失败并立即报告 .

    示例

    import static org.mockito.Mockito.verify;
    import org.junit.Rule;
    import org.mockito.junit.MockitoJUnit;
    import org.mockito.junit.VerificationCollector;
    
    // ...
    
        @Rule
        public final VerificationCollector collector = MockitoJUnit.collector();
    
    
        @Test
        public void givenXWhenYThenZ() throws Exception {
            // ...
            verify(mock).isMethod1();
            verify(mock, times(1)).callMethod2(any(StringBuilder.class));
            verify(mock, never()).callMethod3(any(StringBuilder.class));
            verify(mock, never()).callMethod4(any(String.class));
        }
    

    已知问题

    此规则不能与ErrorCollector规则在同一测试方法中一起使用 . 在单独的测试中,它工作正常 .

相关问题