C#单元测试 - 运行正常
我已经在微软网站上阅读了MSTest单元测试(完全没用的)文档:utterly-useless-ms-doc-link。然后我阅读了一大堆其他更有用的链接(例如在SO上),最后我能够运行 C#单元测试没有问题,像这样:
mstest /testcontainer:UnitTest.dll /detail:errormessage
C ++单元测试 - 失败
据我所知,对于C ++单元测试,这应该是相同的,所以我为C ++运行了一个类似的命令(最后的特定命令细节),但后来我得到了错误:
UnitTest_TrackManager.dll无法加载测试容器 'UnitTest_TrackManager.dll'或其依赖项之一。如果你建立 您的测试项目程序集为64位程序集,无法加载。 在构建测试项目程序集时,请选择“Any CPU” 平台。要在64位处理器上以64位模式运行测试,请 必须更改“主机”选项卡中的测试设置才能在中运行测试 32位进程。错误详细信息:无法加载文件或程序集 '文件:/// d:\ MiddlewareTest01 \ 64 \调试\ UnitTest_TrackManager.dll' 或其中一个依赖项。该模块预计包含一个 装配清单。
32位还是64位DLL?
所以,公平地说,我已经为64位构建了代码而MStest仅为32位。我使用dumpbin /HEADERS fname.dll
检查这是一个64位文件,它是:
File Type: DLL
FILE HEADER VALUES
8664 machine (x64)
D number of sections
5829E628 time date stamp Mon Nov 14 16:28:24 2016
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL
所以,然后我重新编译32位并再次运行测试,但是我得到了同样的错误。所以我检查文件输出(DLL)是32位,看起来确实如此,这里是dumpbin:
File Type: DLL
FILE HEADER VALUES
14C machine (x86)
C number of sections
5829E792 time date stamp Mon Nov 14 16:34:26 2016
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
2102 characteristics
Executable
32 bit word machine
DLL
C ++单元测试在IDE中运行
使用MSVS2015 IDE,我可以编译并运行我的代码/单元测试,它们都可以工作(当我使用x86构建时) - 它们都通过了。如果我选择x64 build,那就抱怨了。
失败的特定命令
这是我正在使用的确切命令行:
mstest /testcontainer:UnitTest_TrackManager.dll /detail:errormessage
它与dll所在的位置相同:
D:\<somepath>\MiddlewareTest01\Debug\UnitTest_TrackManager.dll
<somepath>
只是隐藏我的PC /用户详细信息,MiddlewareTest01
是解决方案文件夹。
正如我所说的,我可以将它用于C#项目,但对于C ++,它似乎没有以相同的方式工作。
更新
使用dependency-walker告诉我:
找不到 MICROSOFT.VISUALSTUDIO.TESTTOOLS.CPPUNITTESTFRAMEWORK.DLL
。这可能是一个问题吗?