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 を追加しました。

4

1 に答える 1

2

あなたが提起した問題に対処するように見えるTypemock Isolator++という製品があります。私はまだそれを試していないので、それがどれほどうまく機能するか、または使用するのがどれほど簡単/難しいかについてコメントすることはできません.

残念ながら、試してみるにはメールアドレスを提供する必要があります。ダウンロードは簡単ですが、このページにリダイレクトされ、「今すぐソフトウェアを登録して無料試用版を入手してください。Isolator++ の使用を開始するためのアクティベーション キーを受け取るには、有効な電子メールを含む詳細を入力してください。 "

于 2011-12-03T16:00:49.320 に答える