您在 TDD 中学到的第一件事是,为了使事物可测试,它们需要松散耦合。在大多数语言中,这是通过通过接口分离耦合来实现的,推迟依赖项的注入,以便模拟对象可以停靠到我们想要测试的实现
现在,在 C++ 中,我们当然可以完全按照这种方法使用抽象类作为接口,但我们也有模板编程的能力,它在编译时解决依赖关系
我见过太多的例子,如何使用标准方法进行 TDD,但模板编程的例子介于零和 zilch 之间。是的,我已经看到 Alexandrescu 使用策略模板参数来推迟选择实现的方法,但我想知道为什么这种方法没有更普遍。它是否会导致困难或令人不安的副作用?
简而言之,在使用模板和编译时多态进行编程时,遵循 TDD 的最佳方法是什么?