代码之家  ›  专栏  ›  技术社区  ›  stiank81

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

  •  23
  • stiank81  · 技术社区  · 16 年前

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

    9 回复  |  直到 13 年前
        1
  •  19
  •   Scott Weinstein    16 年前

    这是可行的,但需要 一点 设置。我刚和Xunit合作。大概下面的内容也可以和努尼特一起使用。

    要让这个工作,你需要三个项目

    • 正在测试的系统-- 苏特
    • 使用您最喜欢的单元测试框架的测试项目-- Xunittest公司
    • A vs测试项目-- 小精灵

      1. 创建 小精灵 项目(轻松呼吸)
      2. 删除默认的unittest1.cs文件
      3. 将“通用测试”添加到 维斯特
      4. 为测试框架指定控制台运行程序的Win32版本的完整路径,例如xunit.console.x86.exe
      5. 指定到的完整路径 Xunittest公司 动态链接库
      6. 在“vs test”菜单下->编辑测试设置->本地->
      7. 数据和诊断“选项卡”
      8. 确保 只有 已启用代码覆盖率
      9. 选择代码覆盖率行,然后单击上面的“配置”按钮(是,这是一个设计良好的UI:)
      10. 在“代码覆盖率详细信息”对话框中
      11. 选择 二者都 的DLL 苏特 和 Xunittest公司
      12. 启用“测试中的仪器组件”

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

        2
  •  26
  •   Be.St.    13 年前

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

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

    • 单元测试
    • xunit.net网站
    • 多单元
    • 质量单位
    • 茉莉花

    添加支持非常容易,因为您可以从Visual Studio扩展管理器添加它。

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

    现在 “分析代码覆盖率”与第三方单元框架协同工作 . 您可以检查所有测试,也可以只检查一个。

    如果您使用的VS2010不害怕升级到VS2012,因为SLN文件是兼容的(您需要VS2010和SP1)。

        3
  •  5
  •   Wade    16 年前

    我把这个摆弄了一个多小时,却不能使它正常工作。我能够使用nunit-console.exe让nunit 2.5.5的测试工具正常运行。虽然nunit控制台运行程序通过通用的vstest成功地运行了我的测试,但我始终无法生成代码覆盖率结果。

    虽然VS2010的测试特性在阅读时听起来很好,但实现似乎过于复杂和沉重。多年来,我一直在使用Nunit,取得了巨大的成功,而且摩擦非常小。

    我决定试试看 JetBrains dotCover 在5分钟内,我下载了它,安装了它,并且能够非常成功地配置和使用它。它完美地融入了Resharper 5,并为我的修女测试工作。代码突出显示是一个很好的可视化工具,可以快速定位测试未执行的代码块。

        4
  •  2
  •   Bertrand Le Roy    16 年前

    我尝试了我在谷歌上找到的所有方法来实现这一点,然后决定尝试一下testdriven.net。它工作得很出色:正确的解决方案,覆盖测试和完成。说真的,再简单不过了。

        5
  •  2
  •   lili    15 年前

    我也遇到了同样的问题,我找到了解决的方法。在“代码覆盖率详细信息”对话框中显示的项目dll是要检测的错误程序集,这将产生空结果。所以您需要从另一个文件夹中实际获取该dll,它在单元测试项目文件夹中!因为您添加了一个对单元测试项目的引用,所以它将出现在那里。例如,在我的例子中,我创建了一个简单的项目计算计算器,然后创建了一个名为test calculator的单元测试项目,并在单元测试项目中添加了calculator.dll作为引用。因此,在“代码覆盖率详细信息”对话框中,我单击“添加程序集”,然后从“..\testcalculator\bin\debug”文件夹中选择calculator.dll。这样就可以了。

        6
  •  2
  •   Scott McKay    14 年前

    你需要关闭Nunit的影子复制才能让它工作。为此,请使用/noshadow标志。

    例如C:\Program Files(x86)\nUnit 2.6\bin\nUnit-console-x86.exe mylibrary.dll/noshadow

        7
  •  1
  •   sergeb    16 年前

    据我所知,事实并非如此。 TestMatrix 但工具可以。

        8
  •  1
  •   mnemosyn    16 年前

    理论上 应该的。甚至有 documentation for it on MSDN . 基本上,您需要建立一个“通用测试项目”,它包含nunit测试。实际上,我已经试着让它工作了近三个小时,但它仍然没有工作。装配是有仪器的,但没有覆盖结果。

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

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

        9
  •  0
  •   Community Mohan Dere    9 年前

    这条线索中的许多答案对我帮助很大,但从多个答案中得到所有的小细节实在是太糟糕了。

    我编制了一份6条提示清单,其中包括斯科特·温斯坦(Scott Weinstein)给出的答案: Running NUnit tests in Visual Studio 2010 with code coverage

    尽管我不应该在两个答案上都获得赞成票,但请不要因为抄袭而让我获得反对票:

    • 斯科特·温斯坦
    • 约翰和斯科特·麦凯
    • 莉莉
    • 助记键

    给他们投票!