3

当社の製品は、以前は 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 の両方のバージョンで問題が発生します。

再現するには、次のようにします。

  1. 新しい C++ 単体テスト プロジェクトを作成する
  2. gmock.libgmock_main.libをリンカ入力として追加
  3. #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 用に構築されています。

ありがとう。

4

2 に答える 2

1

ドリップフィードと同じコード設定 (MSTest で C++ ネイティブ クラスをテストするために Google Mock を使用) を使用して、/CLR コンパイル設定で Google Mock をビルドすることにより、Google Mock 1.6 が動作するようになりました。

これで、Google Mock を使用していくつかのテストを正常に実装できました!

注: /CLR 設定を入れると、他のコンパイル設定の調整が必要になる場合があります。

于 2012-11-09T15:46:26.263 に答える
-1

ドキュメントのどこかで、それは Microsoft のバグであると読んだと思います...

于 2011-05-07T18:20:37.553 に答える