首页 > 代码库 > Mockito-入门

Mockito-入门

前言
    工作中测试框架使用的是Mockito,在网上看到很多人将其与EasyMock还有JMock进行比较,突出其简易和方便的特点。我的确觉得Mockito很方便而且使用简单,但是我没有用过EasyMock和JMock,所以主要来跟大家分享下我在工作中对于Mockito的认识。

正题
   简介
    Mockito是一个针对Java的mocking框架。相信大家都知道单元测试,所谓单元测试,就是需要突出其单元的特点即独立性。比如我们的一个Service类,里面肯定会调用一些Dao类。如果我们直接去测试Service的话就会去调用真实的Dao从而会连接数据库,这么一来只要dao失败了,Service肯定也会跟着失败,因为他们是耦合的,这是一个集成测试而不是单元测试。
    
    Mockito这种框架的出现就是解决这个耦合问题,它可以Mock一个dao类,也就是我们不需要真正调用dao的方法,默认dao的方法都是成功的只需要根据我们的需求返回我们需要的值就Ok,这样我们就可以把焦点放到Service类里面的逻辑测试上面,从而实现了“单元”测试。

   初识Mockito
    开始之前可以先去官网http://mockito.org/ or https://code.google.com/p/mockito/downloads/list下载Mockito的jar包。
    技术分享
   引入Mockito
    我们在使用Mockito之前先引入Mockito的类,由于它的方法都是static的,所以我们可以直接引入static的方法,这样在使用的时候就不用加上类名了,但是对于初用者我建议使用非static的,因为对其方法还不是很熟,加上类名方便熟悉其个方法。
    import    org.mockito.Mockito.*; 或者import    static    org.mockito.Mockito.*;

    我们现根据Mockito的特点举出几个简单的示例:
import static org.mockito.Mockito.*;
import java.util.List;
import org.junit.Test;

public class TestMockito {

	@Test
	public void testMockito1() {
		// mock creation
		List mockedList = mock(List.class);

		// using mock object
		when(mockedList.get( 0 )).thenReturn( "first" );  
		mockedList.add("one");
		mockedList.clear(); 
		
		// 下面会输出“first”,因为前面设定了期望值
		System.out.println(mockedList.get(0));
		
		// 验证add方法是否在前面被调用了一次,且参数为“one”。clear方法同样。
		verify(mockedList).add("one");
		verify(mockedList).clear();
	}
}



小结
    本篇只是让大家对Mockito有个初步的认识,后续我会介绍Mockito各个方法的使用以及我在工作中的应用。

Mockito-入门