我已经在 Visual Studio 2010 中建立了一个项目来针对现有的 MFC DLL 编写单元测试。我正在使用单头单元测试框架,并从单元测试项目链接到 MFC DLL 的 lib 包装器。我正在尝试构建一个std::wstring
在其构造函数中包含 a 的类。这是我的测试的样子:
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
从被测 MFC DLL 导出的类在哪里。但是,测试框架报告了一个意外的异常。将字符串复制到 ' 的构造函数时,我将其跟踪到std::wstring
' 的复制构造Foobar
函数。MSVC 调试器将源字符串报告为<Bad Ptr>
.
我创建了一个虚拟构造函数,Foobar::Foobar(long num, IDbService& db)
所有值(包括IDbService&
)都很好。
MFC DLL 和我的单元测试 EXE 都共享一个属性表,它应该保持编译器标志相同。我正在调试模式下构建和运行测试。任何想法为什么std::wstring
不能跨 DLL 复制?