当社の製品は、以前は Visual Studio 2008 でビルドされ、GoogleMock 1.5.0 を使用していました。
製品をVisual Studio 2010に移植した後、GoogleMock を使用する単体テスト DLL は Visual Studio のテスト ビューに読み込まれず、結果として実行できなくなります。
当社の製品コードは、C++ DLL からエクスポートされたネイティブ C++ クラスで記述されています。
単体テストは C++/CLI で記述されているため、Visual Studio 内で直接ホストできます。C++/CLI ユニット テストはネイティブ C++ クラスを実行し、GoogleMocks は以前このシナリオで非常にうまく機能しました。
実行時にマルチスレッド DLL を使用する静的ライブラリに GoogleMock を組み込みます。すべての製品コードもマルチスレッド DLL を使用しています。
VS2010 内で再構築された GoogleMock 1.5 と 1.6 RC を試しました。しかし、GoogleMock の両方のバージョンで問題が発生します。
再現するには、次のようにします。
- 新しい C++ 単体テスト プロジェクトを作成する
- gmock.libとgmock_main.libをリンカ入力として追加
#include <gmock/gmock.h>
C++/CLI 単体テスト ヘッダー ファイルの先頭にあります。
プロジェクトは正常にビルドされますが、VS テスト ビューは新しい単体テスト DLL を読み込めません。インクルードをコメントアウトするgmock.h
と、DLL がテスト ビューに読み込まれ、そのテスト フィクスチャが実行されます。
別の VS2010 開発者がこの問題に遭遇し、修正を提案できることを願っています。
私のセットアップ:
- ウィンドウズ 7 x64
- Visual Studio 2010、サービス パック 1
- GoogleMock 1.5 または 1.6 RC
- 私たちのアプリは 32 ビット (Win32 および x86) としてビルドされています。
- GoogleMock を含むすべての C++ コードは、VS2010 の vc100 コンパイラを使用してコンパイルされています。当社の C++/CLI コードも .NET 4.0 用に構築されています。
ありがとう。