【问题标题】:Debugging native/managed C++ in VS 2010 with NUnit在 VS 2010 中使用 NUnit 调试本机/托管 C++
【发布时间】:2011-09-30 16:14:02
【问题描述】:

有没有办法设置断点并使用 NUnit 和原生 C++ 和托管 C++ 的混合项目来逐步执行它们?

我将我的 SUT(被测软件)配置为静态库(本机 C++) 我将单元测试套件作为一个单独的项目配置为依赖于我之前声明的库的 dll。我还添加了该库作为对我的单元测试项目的引用。

我的测试在 NUnit 中运行良好,断点不起作用。

同样,有没有办法让断点与 NUnit 与 Native/Managed C++ 一起工作?

【问题讨论】:

  • 如果正在测试的代码不使用 C++/CLI(托管 C++),那么为什么不使用普通的 C++ 测试框架呢?使用 NUnit 有什么特殊需要吗?
  • @Daemin,如果您的代码以 C# 开头然后以本机结尾,那么您为什么要使用两个框架来测试相同的路径? C# 可以通过托管的 c++ 桥跨到非托管
  • @devshorts 从描述中他们已经有一个他们想要测试的本地 C++ 静态库,但是他们已经为它编写了 C# 测试。用 C# 测试框架测试原生 C++ 代码似乎有点奇怪。

标签: c++ nunit


【解决方案1】:

最方便的方法是设置一个自定义工具条目,指定 NUnit 的路径作为命令。对于 VS2003 C# 项目,您可以使用 $(TargetPath) 作为参数,使用 $(TargetDir) 作为初始目录。

使用 Visual Studio VS2005,这变得有点困难,因为该版本改变了“目标”宏的含义,因此它们现在指向中间“obj”目录,而不是“bin”目录之一中的最终输出。以下是适用于两个版本的一些替代方案:

$(ProjectDir)$(ProjectFileName) 打开 VS 项目而不是程序集。如果您使用这种方法,请务必相应地重命名您的配置文件,并将其放在与 VS 项目文件相同的目录中。

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt) 直接运行程序集。请注意,这需要对路径的一部分进行硬编码,包括配置。

如果您想调试您的测试,请使用 Visual Studio Debug | Processes… 启动 NUnit 后附加到 NUnit 的菜单项,并在运行测试之前根据需要在测试代码中设置断点。

【讨论】:

  • 我试图让断点与 C++ 一起工作,而不是 C#。此外,当我运行测试时,将 VS 附加到 NUnit 并不会在任何断点处停止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多