【问题标题】:How to mock spring injected classes using JMockit如何使用 JMockit 模拟 spring 注入的类
【发布时间】:2012-06-29 20:55:15
【问题描述】:

我的代码:

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
    }

}

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

【问题讨论】:

  • 您是在问如何模拟 B,或者如何在测试中将模拟 B 注入 A?

标签: java spring junit mocking jmockit


【解决方案1】:

试试这样的:

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

【讨论】:

  • 这对我没有工作,@Mocked B b; 也没有工作.. 在 jmockit 1.30
【解决方案2】:

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

但是看看here,它可能会给你一个指导。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多