VS2010代码覆盖率是否支持nUnit?

时间:2010-04-19 07:31:49

标签: visual-studio-2010 nunit mstest code-coverage

根据this schema VS2010 Premium和Ultimate有一个检查代码覆盖率的工具 - 以及一些其他测试工具。这也支持nUnit,还是只支持MS测试?

9 个答案:

答案 0 :(得分:26)

Visual Studio 2012增加了对第三方单元测试框架的支持。

可用的测试框架插件包括:

  • NUnit的
  • xUnit.net
  • MbUnit的
  • QUnit
  • 茉莉

添加支持非常简单,因为您可以从Visual Studio Extension Manager添加它。

例如,您可以添加“NUnit测试适配器”。

现在“Analyze Code Coverage”与第三方单元框架一起使用。您可以检查所有测试或仅检查一个。

如果您使用VS 2010并不害怕升级到VS2012,因为sln文件是兼容的(您需要带有SP1的VS2010)。

答案 1 :(得分:19)

这是可行的,但需要一点的设置。我刚刚使用xUnit。据推测,下面的内容也适用于NUnit。

为此,您需要三个项目

  • 受测系统 - SUT
  • 使用您最喜欢的单元测试框架的测试项目 - xUnitTest
  • VS测试项目 - VSTest

    1. 创建 VSTest 项目(轻松自如)
    2. 删除默认的UnitTest1.cs文件
    3. 将“通用测试”添加到 VSTest
    4. 指定测试框架的控制台运行器的win32版本的完整路径,例如xunit.console.x86.exe
    5. 指定 xUnitTest dll
    6. 的完整路径
    7. 在VS测试菜单下 - >编辑测试设置 - >本地 - >
    8. 数据&诊断“标签”
    9. 确保启用代码覆盖率
    10. 选择代码覆盖率行,然后点击上面的“配置”按钮(是的,这是一个设计良好的用户界面:)
    11. 在“代码覆盖率详细信息”对话框中
    12. SUT xUnitTest
    13. 选择两者 dll
    14. 启用“测试中的仪器组件”

现在,当您运行VS2010测试时,它将正确检测测试dll,运行代码运行器并将信息收集到Visual Studio中。

答案 2 :(得分:5)

在摆弄了一个多小时之后,我无法让它正常工作。我能够使用nunit-console.exe使用NUnit 2.5.5的工具正常运行通用测试。虽然NUnit控制台运行程序通过通用VSTest成功运行了我的测试,但我从未能够生成代码覆盖率结果。

尽管VS2010的测试功能在阅读时听起来很棒,但实现起来似乎过于复杂和沉重。多年来我一直在使用NUnit取得了巨大的成功和极低的摩擦力。

我决定尝试JetBrains dotCover测试版,并在5分钟内下载,安装它,并且能够非常成功地配置和使用它。它无缝地集成到ReSharper 5中,只适用于我的NUnit测试。代码突出显示是一个很好的可视化工具,可以快速定位未经测试执行的代码块。

答案 3 :(得分:2)

您需要在NUnit中关闭shadowcopy以使其正常工作。为此,请使用/ noshadow标志。

e.g。 C:\ Program Files(x86)\ NUnit 2.6 \ bin \ nunit-console-x86.exe MyLibrary.dll / noshadow

答案 4 :(得分:2)

我尝试了在Google上找到的所有方法,然后决定尝试使用TestDriven.NET。它工作得非常出色:正确克服解决方案,测试覆盖率并完成。说真的,这可不容易。

答案 5 :(得分:2)

我有同样的问题,我找到了解决问题的方法。 “代码覆盖率详细信息”对话框中显示的项目dll是要检测的错误程序集,这样做的结果是空的。所以你需要从另一个文件夹中获取该dll,它位于单元测试项目文件夹中!由于您添加了作为单元测试项目的参考,它将在那里。因此,例如,在我的情况下,我创建了一个简单的项目calced Calculator,然后创建了一个名为TestCalculator的单元测试项目,并在单元测试项目中添加了Calculator.dll作为参考。因此,在“代码覆盖率详细信息”对话框中,我单击“添加程序集”,然后从“.. \ TestCalculator \ bin \ Debug”文件夹中选择Calculator.dll。这样就可以了。

答案 6 :(得分:1)

据我所知,它没有。我们的TestMatrix工具确实可以。

答案 7 :(得分:1)

理论上,它应该。甚至有documentation for it on MSDN。基本上,您需要设置一个包含NUnit测试的“通用测试项目”。在实践中,我一直试图让它工作近三个小时,但它仍然没有。程序集已经过检测,但没有覆盖结果。

我总是收到此消息:“生成空结果:未使用任何检测二进制文件。查看任何检测问题的测试运行详细信息。”,但该文件中未报告任何问题。

此外,弹出事件日志中的VSPerf错误。我submitted this as a bug to Microsoft。但是,这可能与我的机器有关。由于我刚才提交了这个bug,我还不知道其他人是否可以重现这个问题。

答案 8 :(得分:0)

这个帖子中的许多答案对我有很大的帮助,但是从多个答案中获取所有细节是很难的。

我编制了一份6个提示的清单,连同Scott Weinstein的明确答案为我做了诀窍: Running NUnit tests in Visual Studio 2010 with code coverage

虽然我不值得对这两个答案进行投票,但是请不要忘记复制:

  • Scott Weinstein
  • John和Scott McKay
  • 利利
  • mnemosyn

赞成他们!