我有一个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。为什么呢?
答案 0 :(得分:0)
您返回return new MockA();
而非。你的代码应该是
@Override
public A getObject() throws Exception {
MockA a= new MockA();
a.setB(createMock(B.class));
return a;
}