在C ++ CLI测试项目中调用本机代码时,测试从测试资源管理器中消失

时间:2014-11-20 10:50:04

标签: visual-c++ visual-studio-2013 c++-cli mstest mixed-mode

我在Visual Studio 2013中有一个调用本机代码的C ++ CLI测试项目;

    [TestMethod]
    void Test1()
    {
        int R1, R2;
        R1 = R2 = std::numeric_limits<int>::max();

        R1 = SyncPort::OpenPort(Channel, ReceiveChan, PortID, NominalBaud);
        R2 = SyncPort::OpenPort(Channel, SendChan, PortID, NominalBaud);

        Assert::AreEqual(spSuccess, R1);
        Assert::AreEqual(spSuccess, R2);
    };

出于某种原因,当我添加两个OpenPort调用时,测试将从测试资源管理器中消失,无法运行。如果我将它们评论出来,测试会再次出现。

SyncPort类在单独的.LIB中定义,该.LIB静态链接到测试项目中。如果我定义一个本地具有相同签名的模拟副本类,它就可以工作。我究竟做错了什么?为什么MSTest不喜欢我在测试中添加外部本机函数?

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。这是因为SyncPort程序集缺少延迟加载的依赖项。因此语法是正确的,但它永远不会加载。测试检测引擎在编译后在后台加载测试程序集,尝试加载SyncPort程序集并失败。

解决方案是修复依赖性问题,这一切都已落实到位。