首页 文章

在Visual Studio 2010中使用代码覆盖率运行NUnit测试

提问于
浏览
21

我们最近从Visual Studio 2008升级到Visual Studio 2010.作为我们代码库的一部分,我们有一组非常大的NUnit测试 . 我们希望能够在Visual Studio中运行这些单元测试,但是 with code coverage enabled . 我们有ReSharper,因此可以在Visual Studio中运行测试,但它不允许代码覆盖工具执行其操作并生成coverage统计信息 .

有没有办法让这项工作,或者我们是否必须将测试转换为MSTest?


EDIT: 我们已经尝试过建议的工具:

  • TestDriven.Net
    这在Visual Studio中运行NUnit测试很好,甚至可以使用代码覆盖,但它也包括测试作为覆盖程序集的一部分 . 我们真的不想花费额外的2000英镑,这将花费我们为整个团队获得TestDriven.net .

  • 加利奥
    这没用 . 为了获得覆盖输出,测试需要在Visual Studio测试运行器中运行 . Gallio不为NUnit提供此支持 .

还有什么想法?我们确实找到了几个开源尝试来让这种类型的东西工作,但它们已经陈旧并且长时间没有被触及(因此不支持VS2010) .

5 回答

  • 2

    gallio自动化框架是一个开源项目,应该允许您完成此任务 . 该网站位于http://www.gallio.org/在上一版本中有最初的VS2010支持,在夜间版本中有更多的工作 .

    这里有更多相关信息:http://weblogs.asp.net/astopford/archive/2010/04/13/gallio-and-vs2010.aspx

    但是,如果你有钱花在这上面看看http://TestDriven.Net

  • 6

    Jetbrains似乎正在使用名为“dotCover”的新产品解决这个问题 . 它还处于初期阶段,但考虑到他们的记录,它应该很快成为一个主要的参与者 .

    直到它发布你可以"test"位于here的夜间版本 .

  • 6

    您可以在运行NUnit测试时使VS 2010代码覆盖功能正常工作,但这是配置工作的一部分:

    设置运行nunit-console-x86.exe的通用测试,如下所示:

    Does VS2010 Code Coverage support nUnit?(xUnit的简化描述)

    http://msdn.microsoft.com/en-us/library/ms182624(v=vs.100).aspx(一般说明)

    确保:

    • 你已激活"instrument in place" . 信任VS的部署将无法正常工作

    • 你运行nunit-console-x86.exe . 64位版本无法使用 .

    • 需要代码覆盖率结果的所有库都构建到一个文件夹中 . 复制它们(例如通过构建事件)赢得't work. (For advanced: You can instrument the libraries in another location than their build output folder, but that'非常棘手 . )

    • 包含所有库的文件夹是通用测试的工作目录,并从中启动NUnit .

    • 您将NUnit的参数作为工作文件夹的相对路径提供 .

    • 您还为NUnit提供了命令行选项/ noshadow

    当您将来自不同文件夹的dll复制到单个文件夹中进行测试时,可能会发生奇怪的事情 . 例如,我得到了重新调整的结果, running the unit tests 几乎所有代码都被覆盖了 running the unit tests . 多么可惜,代码覆盖率确实 not 找到 library tested by the unit tests!

    好吧,在设置所有构建输出目录后,我遇到了最奇怪的问题:从该文件夹NUnit不运行 . 我让它从2个不同的位置运行,但在这里它“nunit-console-runner.dll not found” .

    我只是通过以下方式在另一个位置检测测试库:

    • 测试>编辑设置>本地

    • 数据和诊断>代码覆盖率

    • 取消激活原始位置并从测试文件夹中添加库

    今天它立即起作用了,但是前几天我试图将这些位置正确地运行了大约一个小时 . 我仍然不知道那天我搞砸了什么 .

  • 1

    阿德里安,

    看看TestMatrix - 它将运行您的单元测试,代码覆盖和单元测试性能分析 - 所有这些都本机集成到Visual Studio中 .

  • 1

    我在CodePlex上找到了Code Coverage Runner项目,该项目通过适配器连接VS测试和NUnit API . 在撰写本文时,该项目自2008年3月以来尚未更新,但它可能适合您的需求 .

相关问题