相关的测试代码可以这样:
public class MockDatabaseDao1 implements DatabaseDao1 {
private Map map;
public void setMap(Map map){
this.map = map;
}
public void update(args){
map.put("MockDatabaseDao1.update", args);
}
}
public class MockDatabaseDao2 implements DatabaseDao2 {
private Map map;
public void setMap(Map map){
this.map = map;
}
public void delete(args){
map.put("MockDatabaseDao2.delete", args);
}
}
public class ServiceExampleTestCase{
private Map map = new HashMap();
public void testNoOutputMethod(){
DaoTest test = new DaoTest();
DatabaseDao1 dao1 = new MockDatabaseDao1();
dao1.setMap(map);
dao2.setMap(map);
DatabaseDao2 dao2 = new MockDatabaseDao2();
test.setDao1(dao1);
test.setDao2(dao2);
test.noOutputMethod();
assertEquals(new Boolean(true), new Boolean(map.containsKey("MockDatabaseDao1.update")));
assertEquals(new Boolean(true), new Boolean(map.containsKey("MockDatabaseDao2.delete")));
}
}
baidu
下一篇:单元测试实践小结[4]
编写Stubs和Mock object
1. 接口的mock比较容易,测试时,编写stubs和mock object来辅助测试,是非常重要的技术. Mock object分动态mock和静态mock.采用EasyMock可以很好的实现动态mock。
2. 具体类的mock,也很简单,通常利用子类继承的方式实现,利用cglib框架可以很好大达到测试目的。
3. 静态方法的mock。静态方法由于是直接面对服务对象,比较麻烦。不过,并非不可以测试...[查看详情]