在Visual Studio 2010中使用NUnit调试本机/托管的C++代码

5
有没有一种方法可以在混合的本机C++和托管C++项目中使用NUnit设置断点并逐步执行?
我的SUT(被测试软件)被配置为静态库(本机C++),我的单元测试套件作为一个独立的项目,被配置为依赖于我之前提到的库的dll。我还将该库添加为我的单元测试项目的引用。
我的测试在NUnit中运行良好,但断点无法起作用。
请问,是否有一种方法使得NUnit与Native/Managed C++一起使用时可以使用断点?

如果被测试的代码没有使用C++/CLI(托管C++),那么为什么不使用普通的C++测试框架呢?有必要使用NUnit吗? - Dominik Grabiec
@Daemin,如果你有一段从C#开始然后最终转换为本地代码的程序,那么为什么要使用两个框架来测试同一条路径呢?C#可以通过托管的C++桥接到非托管代码。 - devshorts
@devshorts 从描述中可以看出,他们已经有了一个本地的C++静态库需要测试,但是他们却用C#编写了测试。用C#测试框架来测试本地的C++代码似乎有点奇怪。 - Dominik Grabiec
1个回答

1

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

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

$(ProjectDir)$(ProjectFileName) 以打开 VS 项目而不是程序集。如果您使用此方法,请确保相应更名配置文件并将其放置在与 VS 项目文件相同的目录中。

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

如果您想调试测试,请使用 Visual Studio 调试 | 进程… 菜单项在启动 NUnit 后附加到它,并根据需要在测试代码中设置断点。


我正在尝试让C++的断点生效,而不是C#。此外,将VS附加到NUnit时,在运行测试时不会停在任何断点上。 - NexAddo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接