例子二
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");
}
}
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));
}
}
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运行,会发现两个测试方法均测试成功。