在近来对IC(可持续集成)研究的过程中发现要对包含了大部分业务逻辑的web应用action编写单元测试案例还真不是一件容易的事。我们大部分人都知道JUnit但却不一定是到Mock。
Mock可以简单的理解成模拟器,它可以伪装成任意对象,如此一来,对于一些难以生成的对象例如:request,response,resultset等等,你可以直接通过Mock来模拟。有两个项目对Mock进行了封装提供了很简便的API,分别是jMock和EasyMock。
如要对以下类的upload方法编写单元测试:
public class DfsAction { public boolean upload(HttpServletRequest request,HttpServletResponse response){ String fileId = request.getParameter("fileId"); String fileKey = FdfsClient.storeFile(fileId); if(fileKey != null && fileKey.length() > 0){ return true; } return false; } } |
用jMock和Junit编写的单元测试方法如下:
public class DfsActionTest { @Test } |
推荐阅读: