【发布时间】:2014-10-23 05:53:12
【问题描述】:
我有两节课
@Component
public class A {
@Autowired
B b;
}
@Component
public class B {
}
它们是 Spring 通过扫描找到的。
现在我想测试A,但我需要提供不同的实现。 B,比如BMock。
如何让 Spring 找到不同的 B 而不是标准(生产中只有一个)?
我的测试用以下注释:
@ContextConfiguration(locations = "classpath:/test-context.xml")
在哪个文件中定义了一些实例(DAO,..),然后在我写的测试类中
@Autowired
A testInstance;
【问题讨论】:
-
这是一个很好的例子,说明为什么构造函数注入通常比字段注入更好。如果你重写你的类以在它的构造函数中使用
B,你不需要任何复杂的东西来运行你的测试。 -
@chrylis 实际上我最喜欢你的解决方案,我觉得很简单。
标签: java spring testing dependency-injection