弹簧3自动装配和连接测试

我的代码:

@Component
public class A {
    @Autowired
    private B b;

    public void method() {}
}

public interface X {...}

@Component
public class B implements X {
    ...
}

我想在隔离类A中测试。我必须模拟B类吗?如果是,如何?因为它是自动装配的,没有安装器,我可以发送模拟对象。

最佳答案

I want to test in isolation class A.

你应该绝对模拟B,而不是实例化和注入一个B的实例。关键是测试A是否工作,所以你不应该允许潜在的破坏B干扰测试A.

也就是说,我强烈推荐Mockito.随着嘲笑框架的去,它是非常容易使用。你会写如下:

@Test
public void testA() {
    A a = new A();
    B b = Mockito.mock(B.class); // create a mock of B
    Mockito.when(b.getMeaningOfLife()).thenReturn(42); // define mocked behavior of b
    ReflectionTestUtils.setField(a, "b", b); // inject b into the B attribute of A

    a.method();

    // call whatever asserts you need here
}

转载注明原文:弹簧3自动装配和连接测试 - 代码日志