使用FactoryBean注入Mocked对象

时间:2016-01-30 18:44:46

标签: java spring unit-testing autowired easymock

我有一个FactoryBean(Spring)定义如下:

public abstract class A {

    @Autowired
    protected B b;

}

A类有一个B型自动装配对象:

<bean id="mockedA" class="AMockFactoryBean" />

MockA实现了一些抽象类,EasyMockFactoryBean使用了Spring FactoryBean方法。

在我的app.xml配置中,我有:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:testContext.xml")
public class ATest {

    @Autowired
    private A mockedA;

}

我的测试班:

public class MainActivity extends AppCompatActivity {
     int n = 1;
     .....
     other methods
}

结果:ATest中的mockedA已正确自动装配,但Spring已将自动装配的字段A.b设置为null。在调试模式中,我看到如何调用AMockFactoryBean中的getObject()以及如何为mockedA提供EasyMock的Mock实例。但是当调试器跳转到ATest类时,mockedA.b为null。为什么呢?

1 个答案:

答案 0 :(得分:0)

您返回return new MockA();而非。你的代码应该是 @Override public A getObject() throws Exception { MockA a= new MockA(); a.setB(createMock(B.class)); return a; }