在Visual Studio 2017中使用NUnit和Resharper进行Profile单元测试

4
我在Visual Studio 2017 Professional中有一个C#项目,其中包含一些单元测试:使用[Test]声明的方法在编辑器中显示一个小绿勾图标,在这里我可以右键单击“运行”或“调试”测试。当我这样做时,会打开一个窗口显示解决方案中的所有测试,我可以点击绿色的“播放”三角形运行它们。
我也可以从调试 -> 性能分析器开始运行我的程序。
到目前为止还不错。那么,如何在性能分析器下运行单元测试呢?
当我第一次问这个问题时,我寻找单元测试剖析并看到它是Visual Studio Professional的一个功能。但事实上,我没有使用VS自己的单元测试支持,而是使用由Resharper驱动的NUnit。抱歉让大家误解了。

你想到了什么吗? - Vin Shahrdar
不,我从未找到答案。 - Ed Avis
1
你使用哪个测试运行器?默认的是MSTest吗? - Falco Alexander
谢谢,就是这样!像个白痴一样,我没有意识到我运行的单元测试不是普通的Visual Studio测试,而是NUnit,显示它们的GUI由Resharper提供。 - Ed Avis
虽然我仍不知道如何对测试进行性能分析,但至少现在我有更好的搜索关键词了。 - Ed Avis
3个回答

4
使用VS2017专业版和诊断工具,您可以在两个断点之间分析代码!
因此,您可以使用任何工具(VS Test Explorer、ReSharper等)调试单元测试(xunit、nunit、mstest等),步骤如下:
1. 在调试时启用诊断工具(参见tm1的回答
2. 在单元测试开始处设置一个断点,在结束处或其他位置设置另一个断点。
3. 使用您喜欢的工具调试单元测试,您会遇到第一个断点。
4. 打开诊断工具窗口(调试 > 窗口 > 显示诊断工具)。
5. 开始记录CPU分析结果(所有这些图形下面的小记录按钮)。
6. 继续(F5)到下一个断点。
7. VS现在将为此期间创建一个快照,您可以深入研究相关方法。完成!
为了完整起见,Jetbrain的DotTrace是一种商业解决方案,是ReSharper Ultimate的一部分。在撰写本文时,您可以直接对单元测试进行分析,无需手动设置断点。

1

编辑

根据@patrick-stalph的说法,提出的3步解决方案在Visual Studio 2017 Professional中无效。


免责声明

我正在使用 Visual Studio Enterprise 2017,因此无法检查这是否适用于Professional


  1. 打开 测试资源管理器,例如按下 Ctrl + Q,然后输入 测试资源管理器 并按下 Enter
  2. 您应该在 测试资源管理器 中看到您的测试。如果没有,请进行 构建
  3. 选择一个测试,右键单击它,然后选择 分析测试

解决方法

我必须指出,我正在使用,但我还没有看到这个功能起作用。请参见this issue,了解为什么我没有看到它的效果。
因此,根据Jeremy Liberman答案,我能够通过以下步骤解决问题:

  1. 安装 xunit.runner.console NuGet 包到测试项目中
  2. 工具栏 点击 分析 > 性能分析器...
  3. 目标 更改为 可执行文件
  4. 点击 开始
  5. 按照向导操作,直到到达 选择要分析的应用程序 (.EXE、.DLL、网站)
  6. 选择 可执行文件 (.EXE 文件)
  7. 根据 使用 xUnit.net 控制台运行器运行测试,我已指定以下值:
    • 完整路径: c:\<...>\src\packages\xunit.runner.console.2.4.0\tools\net472\xunit.console.exe (请根据您的环境进行调整)
    • 命令行参数: <Product>.Tests\bin\Debug\<Product>.Tests.dll
    • 工作目录: c:\<...>\src\ (解决方案 的根目录)
  8. 下一步完成
请注意,这将列出测试程序集中的所有测试。您可以通过向xunit.runner.console提供更多命令行参数来选择要运行的测试。要了解有关控制台运行器选项的更多信息,请运行不带命令行选项的控制台运行器。

使用VS2017专业版、nunit3和nunit测试适配器,我的测试资源管理器可以显示并运行单元测试。然而,正如您所描述的那样,没有“配置文件测试”按钮。 - Patrick Stalph

1
如果你能够调试并在断点处停止,那么你也应该能够根据此页面获取CPU和内存使用情况,前提是你在调试时启用诊断工具

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