該系列文章翻譯自https://www.baeldung.com/mockito-series
Mockito默認(rèn)的機(jī)制是遇到第一個校驗(yàn)錯誤就停止,也就是通常所說的fail-fast给涕。但是,有時(shí)候我們需要執(zhí)行所有的校驗(yàn)迅腔,并看到所有的校驗(yàn)結(jié)果,不管中途是否發(fā)生校驗(yàn)錯誤靠娱。VerificationCollector就是可以解決上述問題的一種Junit 規(guī)則沧烈,它可以收集測試方法中所有的校驗(yàn)結(jié)果。
1. Maven依賴
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.21.0</version>
</dependency>
2. fail-fast的方式
@Test
public void testLazyVerification1() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
@Test
public void testLazyVerification2() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
fail-fast的方式中饱岸,testLazyVerification1()和testLazyVerification2()都只能看到第一個校驗(yàn)的報(bào)告
Wanted but not invoked:
arrayList.add("one");
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:19)
Actually, there were zero interactions with this mock.
3. lazy vertification的方式
@Rule
public VerificationCollector verificationCollector = MockitoJUnit.collector();
@Test
public void testLazyVerification1() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
@Test
public void testLazyVerification2() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
lazy vertification的方式中掺出,可以看到所有校驗(yàn)的校驗(yàn)結(jié)果
org.mockito.exceptions.base.MockitoAssertionError: There were multiple verification failures:
1. Wanted but not invoked:
arrayList.add("one");
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:21)
Actually, there were zero interactions with this mock.
2. Wanted but not invoked:
arrayList.clear();
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:22)
Actually, there were zero interactions with this mock.