46

我正在学习 xUnit,到目前为止,我发现它是一个最有用的工具。这让我重新思考我对 TDD 的一些编码策略。

但是,我遇到了一个有趣的问题。我的测试用例失败了。那里没有真正的问题,但是我该如何调试呢?

具体来说,我的测试用例由于“超出索引”错误或类似原因而失败。它没有在断言语句中失败。我现在需要的是在 Visual Studio 调试器处于活动状态的情况下运行测试用例的某种方法,以便我可以看到不同变量的状态。

我不打算发布代码,因为这种情况肯定会再次出现。有谁知道如何调试测试用例本身?

差点忘了!我正在使用,

  • Visual Studio 2010 Ultimate(Dreamspark 许可证)
  • xUnit 1.9

我的工作流程涉及使用 xUnit GUI 运行程序来运行测试。

如果我要问的是不可能的,有人可以建议我可以使用的替代测试套件来满足我的需求吗?

4

10 回答 10

77

在 VS2015 及更高版本中,安装xunit.runner.visualstudio NuGet 包。然后调试就像在测试资源管理器窗口中右键单击测试一样简单。(测试-->Windows-->TestExplorer,如果你看不到它)。您也可以右键单击测试代码中的任意位置,然后运行测试和调试测试将出现在上下文菜单中。

在此处输入图像描述

于 2016-05-26T07:42:44.537 回答
11

我没有对此进行测试,但您应该能够将 Visual Studio 连接到 xUnit GUI 并从那里进行调试。

从“调试”菜单中选择“附加到进程”,在列表中找到可执行文件的名称,然后单击附加。根据需要在单元测试中设置断点并从 GUI 运行测试。断点应该按预期命中。

于 2012-06-26T10:49:15.877 回答
10

我未能实现上述所有内容,但以下内容对我有用:在要调试的行之前添加以下行(然后运行测试):

        System.Diagnostics.Debugger.Launch();

缺点是它会启动另一个 VS 实例 :)。

干杯!

于 2015-01-29T14:11:28.947 回答
7

在 Visual Studio 2017 中,确保解决方案配置处于“调试”模式。在“发布”模式下,它不是调试。

于 2017-11-28T12:37:17.250 回答
6

以下内容适用于 VS.NET 和 SharpDevelop。

打开测试项目的属性并转到调试选项卡:

  • 在“启动操作”下,将“启动外部程序”设置为选择的 xUnit 运行程序可执行文件。

  • 在“开始选项”下,将“命令行参数”设置为项目调试 DLL 的名称。

  • 还将“工作目录”设置为项目的“bin\Debug\”目录。

然后选择 Debug > Run 或按 F5 在调试模式下运行测试。断点将被击中。

以这种方式进行调试的好处是您不必每次都附加到 xUnit GUI,您只需要运行您的测试项目。

于 2013-01-17T10:28:14.167 回答
6

请参阅此问题的答案:在单元测试中逐步执行和调试代码

本质上:

...转到VS主菜单中的“测试”...,单击子菜单“调试”。. .'.

它也适用于我使用 VS2017 ;)

于 2019-04-12T08:17:24.707 回答
3

2020 年更新:如果您将 Visual Studio Code 与 OmniSharp 结合使用,则可以单击方法上方的“调试测试”文本。

使用 OmniSharp 和 xUnit 的 Visual Studio Code

于 2020-08-06T02:18:09.903 回答
2

如果你有 resharper,安装了 X-unit contrib 扩展(强烈推荐!),右键单击 Visual Studio 中的类,然后单击“调试单元测试”。

简单的!

于 2014-07-15T09:51:33.343 回答
1
  1. 在您的方法内设置一个断点。
  2. 从 Visual Studio 菜单栏中,单击测试。
  3. 从 Debug 单击 Selected Test 或 All Test。
于 2018-12-26T06:51:08.987 回答
0

我尝试了以上所有方法,但没有成功。对我有用的东西来自以下帖子: https ://github.com/OmniSharp/omnisharp-vscode/issues/1630#issuecomment-317797607

在 .csproj 文件中,在 PropertyGroup 下添加以下内容:可移植

于 2021-06-01T14:47:35.737 回答