使用EasyMock和Spring进行单元测试

时间:2020-03-10 18:04:04

标签: java spring junit easymock

在我的项目中,我有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。

0 个答案:

没有答案
相关问题