私たちは触れることはできませんが、単体テストする必要のあるクラスは、単体テストを考慮して設計されていないので、コードをテストするための模擬オブジェクトの作成に問題があります。模擬オブジェクトの苦悩
例:私たちはfoo1()
をテストしたいと思います上記の例では
class SomeOtherClass
{
public:
void foo2() { … }
};
class ClassToTest
{
public:
ClassToTest() {…}
void foo1() { SomeOtherClass A.foo2(); }
};
が、それは私たちがfoo2()
は(実際の生活の中でこれらの関数/クラスは、より大幅にあるモックオブジェクトに属しているしたいと思いfoo2()
を必要としますハードウェア構成などとの相互作用を伴うため、モックオブジェクト/関数の必要性があります)。
これまで、このようなことをしましたが、コードが他の単体テストに副作用を持つように見えるため、実際には最適ではありません。
class MockSomeOtherClass
{
public:
foo2() { … } // mock function
};
#define SomeOtherClass MockSomeOtherClass
#include “ClassToTest.cpp”
...
(または最小限の変更で)、元のクラスを変更せずにこれを行うには良い方法はありますか?テストにはCPPUnitを使用します。
EDIT:環境をより明確に説明するためにwinapiタグを追加しました。
ありがとう私は見てみましょう! –