例子二
MyClass需要测试的类,提供了两个方法getName和getPassWord,都使用HttpServletRequest作为输入参数并返回从HttpServletRequest中取得的参数,具体代码如下:
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"); } } |
TestMyClass测试类,其中构造了一个假的HttpServletRequest对象,用来测试MyClass中的getName和getPassword方法,代码如下:
package test2; import org.jmock.*; import javax.servlet.http.*; public class TestMyClass extends MockObjectTestCase{ private MyClass myclass ; private Mock mockRequest ; private HttpServletRequest request ; public void setUp() { myclass = new MyClass(); //构造一个Mock对象 mockRequest = new Mock(HttpServletRequest.class); //根据Mock对象获取一个HttpServletRequest对象 request = (HttpServletRequest)mockRequest.proxy(); } public void tearDown() { //TODO } public void testGetName(){ //设置要执行的操作,以下设置表示要调用一次HttpServletRequest对象的 //getParameter方法,传递的参数是"name",期望的返回是"kongxx" mockRequest.expects(atLeastOnce()).method("getParameter").with(eq("name")).will(returnValue("kongxx")); assertNotNull(myclass.getName(request)); assertEquals("kongxx" ,myclass.getName(request)); } public void testGetPassword(){ //设置要执行的操作,以下设置表示要调用一次HttpServletRequest对象的 //getParameter方法,传递的参数是"password",期望的返回是"123456789" mockRequest.expects(atLeastOnce()).method("getParameter").with(eq("password")).will(returnValue("123456789")); assertNotNull(myclass.getPassword(request)); assertEquals("123456789" ,myclass.getPassword(request)); } } |
编译并将其当做一个Test Case运行,会发现两个测试方法均测试成功。
EasyMock
简介
准备
1.获取J2SDK;
2. 获取JUnit V3.8.1(从http://www.junit.org获取开发包);
3.获取EasyMock V1.1(从http://www.easymock.org获取EasyMock开发包)。
4.为了开发方便,建议使用一个好IDE。以下例子中的代码均是在Eclipse V3.0环境下进行的调试。