0

既存のC++プロジェクトの単体テストを設定しようとしています。

設定は次のとおりです。GoogleTestを含むGoogleMockを選択しました。Visual Studioソリューションに別のプロジェクト(テストと呼ばれる)を追加しました。テストするユニットは、メインと呼ばれる別のプロジェクトにあります。計画は、テストしたい各cppファイルをTestsプロジェクトに追加することです。Testsプロジェクトは、Mainからすべてのヘッダーファイルにアクセスできます。

Testsプロジェクトに1つのcppファイルを追加しましたが、コンパイルされますが、リンカーエラーが発生します。ほとんどは、CTimeValueと呼ばれるCOleDateTimeから派生したクラスが原因です。テスト対象のユニットには、値渡しのCTimeValueパラメーターを持つメソッドがあり、いくつかのCTimeValue属性も宣言しています。

UUTを個別にテストし、すべての依存関係にモックとフェイクを使用したいと思います。CTimeValueでそれを行う方法がわかりません。これは値として使用され、仮想メソッドは含まれていませんが、それでも非常に複雑であり、個別の単体テストに値します。

CTimeValueは、プロジェクトでこのような多くのクラスの1つにすぎません。これらのユーザー定義型を使用するクラスのテストを分離するにはどうすればよいですか?

乾杯、フェリックス

4

3 に答える 3

3

単に物事をあざけることができない場合があります。その場合、実行できるのは、問題のクラス(CTimeValue)の包括的なテストを行い、他のテストのサブスイートとしてそのクラスのテストを実行することを確認することです。

于 2009-04-03T20:13:14.527 に答える
0

モックオブジェクトを使用すると、UUTが使用するメソッドシグネチャを追加するだけでよいので、Googleモックを使用してモックを作成できるかもしれません。もちろん、CTimeValueクラス用に別のテストスイートが必要になります。それがある場合は、実際のオブジェクトにリンクすることをお勧めします。モックを作成するためのインターフェイスクラスを作成する価値があるかどうかを判断する必要があります。

于 2009-04-04T17:27:19.193 に答える