2011-12-03 9 views
4

私たちは触れることはできませんが、単体テストする必要のあるクラスは、単体テストを考慮して設計されていないので、コードをテストするための模擬オブジェクトの作成に問題があります。模擬オブジェクトの苦悩

例:私たちは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タグを追加しました。

答えて

2

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

残念ながら、あなたのメールアドレスを教えてください。ダウンロードは簡単ですが、this pageにリダイレクトされ、「ソフトウェアを今すぐ登録して無料試用版を入手してください!Isolator ++を使用するにはアクティベーションキーを受け取るために有効なメールを含めて詳細を入力してください」

+1

ありがとう私は見てみましょう! –