Visual Studio 2010で、既存のMFCDLLに対して単体テストを作成するプロジェクトを設定しました。シングルヘッダーの単体テストフレームワークを使用しており、単体テストプロジェクトからMFCDLLのlibラッパーにリンクしています。コンストラクターをとるクラスを作成しようとしていますstd::wstring
。私のテストは次のようになります。
TEST_CASE("MyProject/MyTest", "Do the test.")
{
MockDbService mockDbService;
Foobar foo(L"{F00DFACE-FEED-DEAD-BEEF-C0FFEEDECADE}", mockDbService);
foo.loadObject();
REQUIRE(mockDbService.getMethodInvokeCount("query()") >= 1);
}
Foobar
テスト対象のMFCDLLからエクスポートされたクラスはどこにありますか。ただし、テストフレームワークは予期しない例外を報告します。std::wstring
文字列を'sコンストラクターにコピーするときに、'scopyコンストラクターまで追跡しましたFoobar
。MSVCデバッガーは、ソース文字列をとして報告します<Bad Ptr>
。
ダミーのコンストラクターを作成しましたがFoobar::Foobar(long num, IDbService& db)
、すべての値(を含むIDbService&
)は問題なく検出されます。
MFC DLLと単体テストEXEの両方が、コンパイラフラグを同等に保つ必要があるプロパティシートを共有しています。テストをビルドしてデバッグモードで実行しています。std::wstring
DLLを越えてコピーできない理由はありますか?