Mock测试场景
mock测试是单元测试中重要的方法之一,它可以将代码中对另一个类的依赖模拟出来,比如HttpServletRequest (必须在Servlet 容器中才能构造出来),或者一个dubbo接口。
Mock对象使用范畴
真是对象具有不可确定的行为,产生不可预测的效果
- 真实对象很难被创建
- 真实对象某些行为很难被触发
- 真实对象可能不存在
Java Mock 测试–Mockito
Mockito 是 Java 单元测试 Mock 框架,开源。
//mock creation,You can mock concrete classes, not just interfaces
List mockedList = Mockito.mock(List.class);
//using mock object
mockedList.add("one");
mockedList.clear();
---------------------stubbing----------------------
//stubbing
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(1)).thenThrow(new RuntimeException());
//following prints "first"
System.out.println(mockedList.get(0));
//注:默认情况下,所有方法都会返回值,一个 mock 将返回要么 null,一个原始/基本类型的包装值或适当的空集。例如,对于一个 int/Integer 就是 0,而对于 boolean/Boolean 就是 false。
//Stubbing 可以被覆盖。
//一旦 stub,该方法将始终返回一个 stub 的值,无论它有多少次被调用。
--------------------------------------------