次の問題があります。触れることはできませんが、それらを単体テストする必要がある多くのクラスがあります。残念ながら、クラスは単体テストを念頭に置いて設計されていないため、コードをテストするためのモック オブジェクトを作成します。
例:
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 を追加しました。