【发布时间】:2015-06-29 13:37:01
【问题描述】:
为了使 bean 可测试,我通常使用以下模式:
class SomeClass {
private Something field = null;
@PostConstruct
public void init() {
if (field == null)
field = someClass.someValue; //(this may throw an exception, that's why it's here)
}
//Notice: this is package local
void setField(Something value) {
field = value;
}
}
我经常使用这种模式,所以我有一个默认行为和一个在测试中使用的行为。 someClass.someValue 通常会是一些讨厌的东西,比如遗留代码中的静态方法,或者抛出异常的东西,或者两者兼而有之。
有人认为这有点像 hack,但我看不出有什么不好的地方。
使用这种模式有什么缺点?
【问题讨论】:
标签: java spring tdd spring-test