java - TDD 和工厂模式

标签 java unit-testing tdd

我是 TDD 新手。我尝试实现一个从文件读取配置并执行一些操作的应用程序。

我有一个conf元素接口(interface):

interface ConfElement{
    doSomething()
}

然后我有两个实现 ConfElement 的 ConcreteConfElement:

具体ConfElementA:

class ConcreteConfElementA implements ConfElement{
     private propA;

     doSomething()
}

ConcreteConfElementB:

class ConcreteConfElementB implements ConfElement{

     private propB;

     doSomething()
}

然后我有一个工厂,它创建 ConcreteConfElementAConcreteConfElementB 从传递给工厂的 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/

相关文章:

java - 有没有办法防止单元测试和测试类之间的耦合

PHPUnit TDD,PHP fatal error : Call to undefined method

.net - 您通过单元测试测试什么?

java - 仅删除字符串 ArrayList 中的最后一个单词

java - AppCompat 如何扩展未明确使用 AppCompat 小部件的布局?

javascript - 简单的 NodeJS/Express 单元测试

asp.net-mvc - 如何对 Asp.net MVC fileUpload 进行单元测试

java - Maven - 在 jar 中包含引用的库

java - 如何设置 onItemClickListener

java - 注入(inject) Autowiring 变量