java-config + @Beans + return null ?
我正在编写单元测试,并且有一个相当复杂的设置。
依赖bean设置一些侦听器并将自动连接的服务传递给它们。
我想测试侦听器是否存在,但不调用它们,所以我想传递'null'而不是autowired服务。(具体来说:我没有setter…)
@Autowired
SomeService1 service1
@Autowired
SomeService2 service2
public List getListeners() {
List l = new ArrayList();
l.add(new AaaListener(service1));
l.add(new BbbListener(Service2));
return l;
}
@Test
public void testListeners() {
int exptecedSize = 2;
sut.doSomething();
List l = sut.getX().getY().getListeners()
assertEquals(expectedSize,l.size());
}
注意,SUT确实间接依赖于返回侦听器的类。
由于这是一个来自大设置的非常小的示例,因此我特别使用不希望在这里使用mock ,因为我只想测试侦听器的存在而不是行为。
模拟20或30个这样的服务将大大降低测试速度。
问题:将这些空值注入autowired实例变量中最简单的方法是什么?
A)添加设置?
B) ReflectionUtils ?当类实例化时,它们已经是null
了…还是在spring上下文中运行它们?
你可以像这样在xml配置中设置属性为null(来自文档)
<bean class="ExampleBean">
<property name="email"><null/></property>
</bean>
- 不要使用Spring上下文并手动创建类
- 使用
ReflectionTestUtils
设置该字段。ReflectionTestUtils
允许设置私有字段,ReflectionUtils
不允许。