单元测试中的Action
在单元测试中,某些特定的情况下,是有需要验证某些动作是否被执行的情况,则此时可以考虑使用verify()来验证某个动作是否被执行。
verify()
来自mockit类库,用来验证特定的action是否被调用。
使用示例:
public class VerifyActionTest {
@Test
public void testVerify() {
List<String> mockedList = mock(ArrayList.class);
mockedList.size(); //invoke the action
//check whether it is invoked once.
verify(mockedList).size();
//size() is invoked in 1 times
verify(mockedList, times(1)).size();
verify(mockedList, atLeast(1)).size();
verify(mockedList, atMost(1)).size();
}
@Test
public void testVerify2() {
List<String> mockedList = mock(ArrayList.class);
//there is no action invoked before the current statement
verifyZeroInteractions(mockedList);
verify(mockedList, times(0)).size();
//clear() is never invoked.
verify(mockedList,never()).clear();
mockedList.add("abcd");
//do exactly checking with params.
verify(mockedList).add("abcd");
verify(mockedList).add(anyString());
}
@Test
public void testActionInOrder() {
List<String> mockedList = mock(ArrayList.class);
mockedList.size();
mockedList.add("a b");
mockedList.clear();
InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a b");
inOrder.verify(mockedList).clear();
}
}
基于上述示例可以 发现,verify重点要解决的是某些方法是否被调用了,调用了几次,是否带有参数以及带有何种参数。
主要的应用场景就是基于特定条件的判断之后,触发某些动作,这些动作在特定情况是没有返回结果的,只能通过是否被触发执行来做相应的判断。