技术开发 频道

什么是mock测试

  例子二

  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运行,会发现两个测试方法均测试成功。

0
相关文章