eli*_*ocs 5 java junit ejb easymock
每当我想测试一个使用资源注入的类时,我最终会包含一个只在测试中使用的构造函数:
public class A {
@EJB
B b;
// Used in tests to inject EJB mock
protected A(B b) {
this.b = b;
}
public A() {}
// Method that I wish to test
public void foo() {
b.bar();
}
}
Run Code Online (Sandbox Code Playgroud)
是否存在另一种模拟资源注入的方法,或者这是正确的模式?
你可以使用简单的光泽来达到这种效果,它模拟了 EJB 注入系统。
另一种方法是在测试中使用反射来设置字段,我有时使用这样的方法:
public static void setPrivateField(Class<? extends Object> instanceFieldClass, Object instance, String fieldName, Object fieldValue) throws Exception {
Field setId = instanceFieldClass.getDeclaredField(fieldName);
setId.setAccessible(true);
setId.set(instance, fieldValue);
}
Run Code Online (Sandbox Code Playgroud)