如何使用JMockit模拟spring注入的类

时间:2012-06-28 10:44:05

标签: java spring junit mocking jmockit

我的代码:

class A extends X {
    @Autowired
    B b;

    @Override
    method() {
        //do something
        b.callMethodInB;
        //do something
    }

}

class B extends X {
    @Autowired
    C c;

    @Override
    method() {
        //do something
        c.callMethodInC;
       //do something
    }

}

我需要在method()中测试A。那么如何模仿B。我正在使用Junit4和Jmockit。

2 个答案:

答案 0 :(得分:9)

尝试这样的事情:

import org.junit.*;
import mockit.*;

public class ATest
{
    @Tested A a;
    @Injectable B b;

    @Test
    public void testMethod()
    {
        a.method();

        new Verifications() {{ b.callMethodInB(); }};
    }
}

JMockit使用注入的A实例(来自模拟字段B)自动实例化b,并将其设置为测试类中的a字段。这与使用的DI框架(Spring)无关。

答案 1 :(得分:0)

由于Mocking Frameworks通常依赖于DI(依赖注入),这基本上意味着您需要在方法签名中传输模拟对象,我不确定它是否可行。

但是看看here,它可能会给你一个如何做的方向。