MSTest C ++单元测试dll无法正常工作

时间:2016-11-14 16:42:38

标签: c++ visual-studio unit-testing mstest

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。这可能是一个问题吗?

0 个答案:

没有答案