我继承了一个使用EJB 3.0并且没有测试的遗留Java 1.5项目。
我正在尝试创建一些单元测试,但代码都与静态调用纠缠在一起。每次需要访问业务接口时,都会调用以下类:
public final class EJBHelper {
private static InitialContext context;
static {
try {
context = new InitialContext();
} catch (NamingException e) {
...
}
}
public static Object getBean(String entity) throws NamingException {
return context.lookup("PROJECT_EAR/" + entity + "Bean/local");
}
}
在每个类中,为每个需要的EJB bean重复此代码:
public class SomeService {
private static SomeBean someBean;
private static SomeBean getSomeBean() throws NamingException {
if (someBean== null) {
someBean= (SomeBean) EJBHelper.getBean("some");
}
return someBean;
}
private static AnotherBean anotherBean;
private static AnotherBean getAnotherBean() throws NamingException {
if (anotherBean == null) {
anotherBean= (AnotherBean ) EJBHelper.getBean("another");
}
return anotherBean;
}
public doSomething() {
getSomeBean().findAll(...)
getAnotherBean().makePersistent(...)
}
}
我应该如何重构这个混乱?
答案 0 :(得分:0)
是否需要静态类是静态的?如果没有,我会尝试将它们重构为非静态类,然后通过构造函数将依赖项注入到Service类中。