我是 TDD 新手。我尝试实现一个从文件读取配置并执行一些操作的应用程序。
我有一个conf元素接口(interface):
interface ConfElement{
doSomething()
}
然后我有两个实现 ConfElement
的 ConcreteConfElement:
具体ConfElementA:
class ConcreteConfElementA implements ConfElement{
private propA;
doSomething()
}
ConcreteConfElementB:
class ConcreteConfElementB implements ConfElement{
private propB;
doSomething()
}
然后我有一个工厂,它创建 ConcreteConfElementA
和 ConcreteConfElementB
从传递给工厂的 Configuration
对象读取;
ConfElementFactory(){
public ConfElementFactory(Configuration conf)
ConfElement createConf(){
if(conf.hasElA){
return new ConcreteConfElementA();
}
else{
return new ConcreteConfElementB();
}
}
}
如何测试工厂方法?它是否适合 TDD 设计?
最佳答案
使用 TDD,您需要先编写测试,然后再编写生产代码。 TDD 鼓励设计模式随着时间的推移而出现,而不是立即出现。
- 为用例 1 编写测试
- 实现足够的代码来通过此测试(无接口(interface)!)
- 测试通过
- 为用例 2 编写测试
- 实现足够的代码来通过此测试
- 测试通过
- 重构以删除重复项(提示:工厂模式出现!)
这样代码就经过了 100% 的测试,无需担心模式是否可测试。重构是 TDD 的关键要素。
关于java - TDD 和工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810704/