我是tdd的新手。我尝试实现一个从文件中读取配置并执行某些操作的应用程序。
我有一个conf元素接口:
interface ConfElement{
doSamething()
}
然后我有一个实现ConfElement
的两个ConcreteConfElement:
ConcreteConfElementA:
class ConcreteConfElementA implements ConfElement{
private propA;
doSamething()
}
ConcreteConfElementB:
class ConcreteConfElementB implements ConfElement{
private propB;
doSamething()
}
然后我有一个工厂创建ConcreteConfElementA
和ConcreteConfElementB
读取Configuration
对象传递给工厂;
ConfElementFactory(){
public ConfElementFactory(Configuration conf)
ConfElement createConf(){
if(conf.hasElA){
return new ConcreteConfElementA();
}
else{
return new ConcreteConfElementB();
}
}
}
我该如何测试工厂方法?它是为tdd设计的吗?
答案 0 :(得分:0)
测试工厂的条件逻辑应该相对容易。 两项测试可能是:
将Configuration
对象实例化为hasEla
为真。使用测试Configuration
对象实例化Element工厂,并断言已返回ConcreteConfElementA
的实例。
重复第一步,但将hasEla
设为false,并声明已返回ElementB
。
我相信这个特定的工厂是可测试的,因为它允许调用者注入Configuration
。
答案 1 :(得分:0)
使用TDD,您需要在生产代码之前首先编写测试。 TDD鼓励设计模式超时而不是直接出现。
这样,代码经过100%测试,无需担心模式是否可测试。重构是TDD的关键要素。