写测试用例时,如果只关注输入、输出或是否被调用,建议使用Mock框架
Mock框架在处理”黑洞“接口,有奇效
本文简单分享下Mockito框架的使用
前期准备工作(包括相关工具或所使用的原料等)Mockito IntelliJ IDEATDDJava 详细的操作方法或具体步骤
能使用Mock的框架有EasyMock,Mockito,PowerMock、JMock等
本系统就只分享Mockito相关的
触类旁通嘛,掌握了Mockito其它就没必要了解其它了,如果想了解,也会很快上手
不费话了,先来个不使用Mock框架的例子
Code:
package tdd.mockito;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
/**
* Created by MyWorld on 2016/3/27.
*/
public class MockitoDemo {
@Test
public void testListWithActualValue() {
List
String listValue0="value1";
list.add(listValue0);
assertThat(list.get(0), is(listValue0));
}
}

执行下看看结果
是绿条
与预期一致
OK

使用Mockito框架应该怎么写呢
再写个测试用例
Code:
@Test
public void testListWithMockito() {
String listValue0="value1";
List list=Mockito.mock(List.class);
when(list.get(0)).thenReturn(listValue0);
assertThat(list.get(0).toString(), is(listValue0));
}

简单解释上上面的代码Mockito.mock(List.class);//创建一个List接口的Mock对象,可以理解为是一个模拟对象或者假对象。这个对象的作用就是模拟,List的输入和输出
when(list.get(0)).thenReturn(listValue0);//模拟list对象的输入和输出
当执行list.get(0)方法时,返回变量listValue0的值
执行下看看是不是绿条
与预期一致
OK

是不是觉得也没省代码行数
上面只是举一个入门的例子,实际工作中遇到的需要mock的接口,有些可能需要一些web容器或特定的服务器启动才可以使用
这样直接调用肯定会抛异常的
Mockito框架也支持注解的写法,此系列的其它示例都会使用注解的方式使用Mockito框架
Code:
@RunWith(MockitoJUnitRunner.class)
public class MockitoDemo {
@Mock
private List list;
@Test
public void testListWithMockitoByAnnotation() {
String listValue0="value1";
when(list.get(0)).thenReturn(listValue0);
assertThat(list.get(0).toString(), is(listValue0));
}

简单解释上上面的代码
@RunWith(MockitoJUnitRunner.class)//指定使用MockitoJUnitRunner.class测试运行器
@Mock//添加了@Mock注解的字段,由Mockito自动生成mock对象
执行下看看结果,应该是绿条
与预期一致
OK

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
