我正在编写单元测试并且有一个相当复杂的设置。
依赖 bean 设置一些侦听器并将自动装配的服务传递给它们。
我想测试监听器是否存在,但不调用它们,所以我想传递“null”而不是自动装配服务。(特别是:我没有二传手......)
@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 确实间接依赖于返回侦听器的类。
由于这是一个大环境中的一个非常小的例子,我特别不想在这里使用模拟,因为我只想测试听众的存在而不是行为。
模拟 20 或 30 个此类服务将大大减慢测试速度。
问题:将这些空值注入自动装配的实例变量的最简单方法是什么?
A)添加二传手?
B)反射工具?
C) java-config + @Beans + 返回 null ?