在我的项目中,我有UtilClass例如A(所有方法均为静态,私有构造函数)。我需要测试此静态方法a(13个参数)之一。该类具有一个依赖项(另一个B类)。 B类-A类中的静态字段。在代码中像这样:
public class A{
private static B b = AppContext.getBean(B.class);
public static C a("14 parameters") throw MyException{
try{
b.call("13 parameters");
}catch(MyExceptionSecond e){
MyException newException = new MyException(msg,e);
if(e.getCode() == smth){
//do smth
}
throw privateMethodClassA(newException);
}
}
}
我需要测试privateMethodClassA的工作方式,为此我在config-test.xml中模拟了类B:
<bean class="org.easymock.EasyMock" factory-method="createMock" primary="true" id="classB">
<constructor-arg value="com.my.package.B"/>
</bean>
这是我的测试和设置方法:
public class MyTest {
private B b;
@Before
public void setUp() throws Exception {
b = AppContext.getBean(B.class);
expect(b.call("13 paramaters"))
.andThrow(
new MyExceptionSecond("some error code", "testMessage", new Object()))
.anyTimes();
replay(b);
}
@Test(expected = MyException.class)
public void testExceptionMethod() throws Exception {
A.a("13 parametrs");
}
}
如果我在调试中评估b.call(“ 13参数”)一切正常(在上下文测试中),但是在同一调试中,进入上下文调用类A并评估b.call(“ 13参数”
”),具有相同参数的模拟对象将返回null,而不是第一种情况下的MyExceptionSecond。问题是-我无法获得所有导致的MyException错误:
java.lang.AssertionError: Expected exception: com.my.package.MyException
您如何看待这个问题?
P.S我的猜测是,这是将Expect()附加到测试上下文而不是移动本身的问题。
P.P.S java8,EasyMock 4.2,Spring 4.2.8,AppContext == org.springframework.context.ApplicationContext。