【发布时间】:2010-04-09 18:04:12
【问题描述】:
假设我有一个像这样的 C++ 类:
class A
{
public:
A()
{
}
void SetNewB( const B& _b ) { m_B = _b; }
private:
B m_B;
}
为了对这样的东西进行单元测试,我必须打破 A 对 B 的依赖。由于类 A 持有一个实际对象而不是指针,我将不得不重构这段代码以获取一个指针。此外,我需要为 B 创建一个父接口类,这样我就可以在测试 SetNewB 时传入我自己的假 B。
在这种情况下,使用依赖注入进行单元测试不会使现有代码进一步复杂化吗?如果我将 B 设为指针,我现在将引入堆分配,并且现在有一些代码负责清理它(除非我使用 ref 计数指针)。此外,如果 B 是一个相当简单的类,只有几个成员变量和函数,为什么要为它引入一个全新的接口而不是只使用 B 的实例进行测试?
我想您可以提出使用接口重构 A 会更容易的论点。但是在某些情况下,两个类可能需要紧密耦合吗?
【问题讨论】:
标签: c++ unit-testing dependency-injection