【发布时间】:2013-05-15 20:17:28
【问题描述】:
我遇到了测试类的问题,该类在构造函数中实现了与 EJB 的一些本地连接。此连接仅在构造函数内部使用,并设置实例化类的一些私有属性。
我要测试的MyClass:
public class MyClass {
private String myValue;
public MyClass() throws Exception {
MyBeanLocal local = EJBFactory.getLocal(MyBeanLocal.class);
myValue = local.fetchValue();
}
public void processValue() {
... do some String magic which should be tested ...
}
public String getValue() {
return myValue;
}
}
EJBFactory 包含一些增强的查找(带有缓存)并且可以返回本地或远程连接(远程需要服务器位置)。
MyBeanLocal 接口
public interface MyLocalBean {
public String fetchValue();
}
最后是我想要测试 MyClass.processValue 方法的 junit 类:
public class MyClassTest {
private MyClass myClass;
@Before
public void setUp() {
myClass = new MyClass();
}
@Test
public void testProcessValue() {
Assert.assertEquals(myClass.processValue(), "MY EXPECTED VALUE");
}
}
问题是当我在本地机器(或一些自动测试机器,如 Hudson 或 Jenkins)上运行 JUnits 并且 bean 在与我的本地不同的应用程序服务器上下文中运行时如何测试情况。我不能接触生产代码,只需要编写测试。
其实我不需要让 MyBeanLocal 起作用,但我需要设置 myValue。
我正在考虑嘲笑,但我不熟悉。
【问题讨论】:
标签: java unit-testing mocking ejb junit4