首页 文章

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

提问于
浏览
23

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

9 回答

  • 0

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

    为此,您需要三个项目

    • 被测系统 - SUT

    • 使用您最喜欢的单元测试框架的测试项目 - xUnitTest

    • VS测试项目 - VSTest

    • 创建 VSTest 项目(轻松呼吸)

    • 删除默认的UnitTest1.cs文件

    • 将"Generic Test"添加到 VSTest

    • 指定测试框架的控制台运行程序的win32版本的完整路径,例如xunit.console.x86.exe

    • 指定 xUnitTest dll的完整路径

    • 在VS测试菜单 - >编辑测试设置 - >本地 - >下

    • 数据与诊断"Tab"

    • 确保启用 only 代码覆盖率

    • 选择Code Coverage行,然后单击上面的"Configure"按钮(是的,这是一个设计良好的UI :)

    • 在"Code Coverage Detail"对话框中

    • 选择 both SUTxUnitTest 的dll

    • 启用"Instrument assemblies in test"

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

  • 26

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

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

    • NUnit

    • xUnit.net

    • MbUnit

    • QUnit

    • 茉莉花

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

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

    现在 "Analyze Code Coverage" works with third party unit framework . 您可以检查所有测试或仅检查一个 .

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

  • 19

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

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

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

  • 1

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

  • 2

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

  • 5

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

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

  • 1

    据我所知,它没有 . 我们的TestMatrix工具确实如此 .

  • 2

    从理论上说,它应该 . 甚至有documentation for it on MSDN . 基本上,您需要设置一个包装NUnit测试的"generic test project" . 在实践中,我've been trying to get it to work for almost three hours now and it still doesn't . 装配是仪表化的,但没有覆盖结果 .

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

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

  • 2

    这个帖子中的许多答案对我帮助很大,但从多个答案中得到所有细节都是很难的 .

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

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

    • Scott Weinstein

    • John和Scott McKay

    • 莉莉

    • mnemosyn

    赞成他们!

相关问题