论坛首页 Java企业应用论坛

用EasyMock辅助JUnit测试

浏览 5004 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-02-23   最后修改:2009-02-23

由于JUnit很难操控外部环境的资源,如数据库、网络、Servlet引擎;通过MOCK对象就能模拟外部环境的资源,从而保证JUnit的正常运行。

其中EasyMock是一套简单的生成MOCK对象类库,用它可以非常容易的辅助JUnit完成单元测试;如下:

 

public class UseMock {

 @Test
 public void testMock() {
  HttpServletRequest request = EasyMock.createMock(HttpServletRequest.class);
  request.getParameter("ffff");
  EasyMock.expect(request.getParameter("ffff")).andReturn("33333");
  EasyMock.expect(request.getRealPath("/")).andReturn("fffffffff").anyTimes();
  //EasyMock.expectLastCall().andReturn("ffff").times(1);
  EasyMock.replay(request);
  System.out.println(request.getRealPath("/"));
  System.out.println(request.getRealPath("/"));
  EasyMock.verify(request);
 }
}

 

 

   发表时间:2009-02-23  
Gmock可以提供更加简洁的语法:
void testMock() {
	HttpServletRequest request = mock(HttpServletRequest) {
		getParameter("ffff").returns("33333")
		getRealPath("/").returns("fffffffff").stub()
	}
	play {
		println request.getParameter("ffff")
		println request.getRealPath("/")
		println request.getRealPath("/")
	}
}
8 请登录后投票
   发表时间:2009-02-23   最后修改:2009-02-23
推荐 mockito:simpler & better mocking
http://code.google.com/p/mockito
 //you can use flexible argument matchers, e.g:
 when(mock.someMethod(anyString())).thenReturn(10);

 //setting exception to be thrown:
 when(mock.someMethod("some arg")).thenThrow(new RuntimeException());

 //you can set different behavior for consecutive method calls.
 //Last stubbing (e.g: thenReturn("foo")) determines the behavior of further consecutive calls.
 when(mock.someMethod("some arg"))
  .thenThrow(new RuntimeException())
  .thenReturn("foo");
0 请登录后投票
   发表时间:2009-02-23  
daquan198163 写道
推荐 mockito:simpler & better mocking
http://code.google.com/p/mockito

我个人觉得建立在静态语言上的DSL很难比建立在动态语言上的来得更简洁。
0 请登录后投票
   发表时间:2009-02-24   最后修改:2009-02-24
JohnnyJian 写道
daquan198163 写道
推荐 mockito:simpler & better mocking
http://code.google.com/p/mockito

我个人觉得建立在静态语言上的DSL很难比建立在动态语言上的来得更简洁。

哦?你的意思是那个groovy的mock框架也适合用来测java?
这我倒是没想到
0 请登录后投票
   发表时间:2009-02-24  
daquan198163 写道
JohnnyJian 写道
daquan198163 写道
推荐 mockito:simpler & better mocking
http://code.google.com/p/mockito

我个人觉得建立在静态语言上的DSL很难比建立在动态语言上的来得更简洁。

哦?你的意思是那个groovy的mock框架也适合用来测java?
这我倒是没想到

是的,gmock与groovy官方的解决方案——MockFor类——最大的不同就是gmock可以用来测java代码(当然,更简洁的语法也是一个不同点)。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics