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更清楚地描述環境。
謝謝,我會看看! –