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::wstringDLLを越えてコピーできない理由はありますか?