日期:2014-05-20  浏览次数:20687 次

怎么用mock class替换掉实现类?
我有这样一个测试需求:
public static VersionManager getVersionManager(HttpSession session, long id) {
WorkerContext wc = (WorkerContext)session.getAttribute("WorkerContext");
if (session != null && wc != null && wc.getVm() != null)
return wc.getVm();

PackageInfo packInfo = PackageInfo.findPackageInfo(id);
VersionManagerSVNImpl vm = new VersionManagerSVNImpl();
vm.setAuthor(packInfo.getSvnUser());

  return vm;
}
这个函数需要使用类PackageInfo这个实体类,通过调用PackageInfo.findPackageInfo(id)来得到一个对象,再用这个对象的值来初始化VersionManager.我现在遇到的问题是,怎么在调用函数getVersionManager()之前,将类PackageInfo给mock掉,这样使得PackageInfo.findPackageInfo(id)能返回我需要的值?

------解决方案--------------------
你需要静态导入easymock的control,如:
Java code

import static org.easymock.classextension.EasyMock.createControl;

IMocksControl control;

//创建类实例
PackageInfo pi = control.createMock(PackageInfo.class);