【问题标题】:Test disappears from test explorer when calling native code in C++ CLI test project在 C++ CLI 测试项目中调用本机代码时,测试从测试资源管理器中消失
【发布时间】:2015-01-18 04:51:59
【问题描述】:

我在 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 不喜欢我在测试中添加外部原生函数?

【问题讨论】:

  • 测试的 bin 文件夹中是否有所有必需的 dll?

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


【解决方案1】:

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

解决方案是解决依赖问题,一切都到位了。

【讨论】:

    猜你喜欢
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2020-09-13
    • 2020-05-13
    • 1970-01-01
    • 2016-12-02
    • 2019-06-23
    相关资源
    最近更新 更多