首页  

Mockito mock 和 spy 区别     所属分类 unit-test 浏览量 373
mock 和 spy 区别
未打桩前  spy 会调用真实方法 ,mock不会调用实际方法
        
mock方法 默认返回空数据 对象类型为 null

int 0 
Integer null 
boolean false 


List mockList = Mockito.mock(ArrayList.class);
List spyList = Mockito.spy(ArrayList.class);
// 入参使用 接口 行为与mock一样
// List spyList = Mockito.spy(List.class);
// 未打桩前  spy 会调用真实方法 ,mock不会调用实际方法
        
System.out.println(mockList.size());
System.out.println(mockList.get(0));
try {
    // 调用实际方法 
    System.out.println(spyList.get(0));
}catch(Exception e) {
    // java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    System.out.println(e);
}
// 调用 add 方法 
spyList.add("hello");
// 1 
System.out.println(spyList.size());
// hello
System.out.println(spyList.get(0));
        
// stub  打桩
Mockito.when(mockList.get(0)).thenReturn("first");
Mockito.when(spyList.get(0)).thenReturn("first");

// first
System.out.println(mockList.get(0));
// first 
System.out.println(spyList.get(0));

上一篇     下一篇
powermock 静态方法mock

mockito 实例

Mocktio 指南

mock 与 字节码生成工具

spring web 注解

javassist 简介