为了能够单元测试我的C++代码,我通常会传递被测试类的构造函数一个或多个可以是“生产代码”或假/模拟对象的对象(让我们调用这些注射物体)。我已通过C++中用于依赖注入的接口vs模板
- 创建了“生产代码”类和假/模拟类继承的接口。
- 使被测试的类成为模板类,该类将注入对象的类型作为模板参数,并将注入对象的实例作为参数传递给构造函数。
一些随机的想法:
- ,直到我们有概念(C++ 0x中),只有文件和参数的命名会提示什么提供被测类(使用模板时)。
- 它并不总是能够创造遗留代码的接口
- 的接口基本上只创建能够做到依赖注入
- 以同样的方式:模板测试类只是做使依赖注入
你有什么想法?这个问题还有其他解决方案吗?
这很简单,但非常强大。我喜欢! – 2009-07-15 14:48:11
为了记录,人们应该意识到使方法变为虚拟问题(参见非虚拟接口(NVI)习语) – 2009-08-29 23:10:34
是的,有时这种方法可能会与“纯粹的NVI”发生冲突。在很多情况下,你可以嘲笑受保护的虚拟函数,但是如果你确实需要模拟公共的非虚拟接口,那么我认为它不会让公众虚拟化,并且仍然使用NVI。在这种情况下,人们会失去一些编译器执行的最佳实践,但本身并不是最佳实践。 – 2009-09-01 22:57:55