例子一
以下是一个简单例子,为了方便对比,这里重新实现了JMock例子一,代码如下:
package test1; import org.easymock.*; import junit.framework.*; import javax.servlet.http.*; public class MockRequestTest extends TestCase{ private MockControl control; private HttpServletRequest mockRequest; public void testMockRequest(){ //创建一个Mock HttpServletRequest的MockControl对象 control = MockControl.createControl(HttpServletRequest.class); //获取一个Mock HttpServletRequest对象 mockRequest = (HttpServletRequest) control.getMock(); //设置期望调用的Mock HttpServletRequest对象的方法 mockRequest.getParameter("name"); //设置调用方法期望的返回值,并指定调用次数 //以下后两个参数表示最少调用一次,最多调用一次 control.setReturnValue("kongxx" ,1 ,1); //设置Mock HttpServletRequest的状态, //表示此Mock HttpServletRequest对象可以被使用 control.replay(); //使用断言检查调用 assertEquals("kongxx",mockRequest.getParameter("name")); //验证期望的调用 control.verify(); } } |
编译并将其当做一个Test Case运行,会发现两个测试方法均测试成功。
例子二
同例子一样,对JMock例子二重新实现产生了EasyMock的例子二。
需要测试的类代码如下:
package test2; import javax.servlet.http.*; public class MyClass { public String getName(HttpServletRequest request) { return request.getParameter("name"); } public String getPassword(HttpServletRequest request) { return request.getParameter("password"); } } |
测试类代码如下:
package test2; import org.easymock.*; import junit.framework.*; import javax.servlet.http.*; public class TestMyClass extends TestCase{ private MockControl control; private HttpServletRequest mockRequest; private MyClass myclass ; public void setUp() { myclass = new MyClass(); //创建一个Mock HttpServletRequest的MockControl对象 control = MockControl.createControl(HttpServletRequest.class); //获取一个Mock HttpServletRequest对象 mockRequest = (HttpServletRequest) control.g |
|