我已经实现了一些使用Spring Test Framework的单元测试。测试包括通过名称自动装配的成员,例如
@Resource
private FooBar myFooBar;
我将测试配置为能够使用提到的here等不同配置运行。
某些配置不允许运行所有测试(例如,没有可用的数据库)。我想在这种情况下跳过测试。我跳过测试的标准是myFooBar == null
。
assumeTrue(myFooBar != null)
我遇到了如何将null
注入此成员的问题。我试过了
<bean id="myFooBar" class="FooBar">
<null />
</bean>
但这不起作用(从元素'null'开始找到无效内容...... )
如果我没有在context.xml中配置bean,我会得到NoSuchBeanDefinitionException
。
对于Spring来说,向我的会员注入null
并不是那么难 - 但这对我来说确实很难: - )
我必须补充一点,我的FooBar
类没有默认构造函数。
您是否知道如何注入null
或如何忽略自动连接的测试类成员上缺少的bean定义?
问候
K. Claszen
答案 0 :(得分:7)
如果您使用@Autowired
按类型自动装箱,而不是使用@Resource
按名称进行自动装配,那么您可以这样做:
@Autowired(required = false)
private FooBar myFooBar;
设置required = false
将使Spring忽略此依赖关系,如果它无法解析,就像documentation状态一样。
您仍然可以使用@Autowired
使用@Qualifier
按名称使用自动装配来提供bean名称:
@Autowired(required = false)
@Qualifier("myFooBar")
private FooBar myFooBar;
有关@Qualifier
的更多信息,请参阅此reference页。