4
我们遇到了以下问题:一些我们无法触及但需要单元测试的类不幸的是,这些类没有设计考虑单元测试,所以我们在创建模拟对象来测试代码时遇到了问题。模拟对象的困境
实施例:
class SomeOtherClass
{
public:
void foo2() { … }
};
class ClassToTest
{
public:
ClassToTest() {…}
void foo1() { SomeOtherClass A.foo2(); }
};
在上面的例子中,我们想测试foo1()
但它需要foo2()
所以我们想使foo2()
属于模拟对象(在现实生活中这些功能/类得多复杂并涉及与硬件配置的交互等,因此需要模拟对象/功能)。
到现在为止,我们已经做了这样的事情,但它并不是最优的,因为代码似乎对其他单元测试有副作用。
class MockSomeOtherClass
{
public:
foo2() { … } // mock function
};
#define SomeOtherClass MockSomeOtherClass
#include “ClassToTest.cpp”
...
有没有更好的办法做到这一点不改变原来的类(或最小的变化)?我们使用CPPUnit进行测试。
编辑:添加标签winapi更清楚地描述环境。
谢谢,我会看看! –