Visual c++ 在C+;中调用本机代码时,测试将从测试资源管理器中消失+;CLI测试项目 我在Visual Studio 2013中调用了本地代码的C++ CLI测试项目;p> [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); }; [TestMethod] void Test1() { int R1,R2; R1=R2=std::numeric_limits::max(); R1=SyncPort::OpenPort(通道、接收通道、端口ID、标称波特率); R2=SyncPort::OpenPort(通道、SendChan、PortID、标称波特率); 断言::AreEqual(spSuccess,R1); 断言::AreEqual(spSuccess,R2); };

Visual c++ 在C+;中调用本机代码时,测试将从测试资源管理器中消失+;CLI测试项目 我在Visual Studio 2013中调用了本地代码的C++ CLI测试项目;p> [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); }; [TestMethod] void Test1() { int R1,R2; R1=R2=std::numeric_limits::max(); R1=SyncPort::OpenPort(通道、接收通道、端口ID、标称波特率); R2=SyncPort::OpenPort(通道、SendChan、PortID、标称波特率); 断言::AreEqual(spSuccess,R1); 断言::AreEqual(spSuccess,R2); };,visual-c++,visual-studio-2013,c++-cli,mstest,mixed-mode,Visual C++,Visual Studio 2013,C++ Cli,Mstest,Mixed Mode,出于某种原因,当我添加两个OpenPort调用时,测试将从测试资源管理器中消失,无法运行。如果我将它们注释掉,测试将再次出现 SyncPort类在静态链接到测试项目的单独.LIB中定义。如果我定义一个在本地具有相同签名的模拟副本类,它就可以工作。我做错了什么?为什么MSTest不喜欢我在测试中添加外部本机函数?我解决了这个问题。原因是SyncPort程序集缺少延迟加载依赖项。因此,语法是正确的,但它永远不会加载。测试检测引擎在编译后在后台加载测试程序集,尝试加载SyncPort程序集,但失败 解

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


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

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


解决方案是解决依赖性问题,所有问题都解决了。

测试的bin文件夹中是否有所有必要的DLL?