根据this schema VS2010 Premium和Ultimate有一个检查代码覆盖率的工具 - 以及一些其他测试工具 . 这也支持nUnit,还是只支持MS测试?
这是可行的,但需要一些设置 . 我刚刚使用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 SUT 和 xUnitTest 的dll
启用"Instrument assemblies in test"
现在,当您运行VS2010测试时,它将正确检测测试dll,运行代码运行器并将信息收集到Visual Studio中 .
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) .
在摆弄了一个多小时后,我无法让它正常工作 . 我能够使用nunit-console.exe使用NUnit 2.5.5的工具正常运行通用测试 . 虽然NUnit控制台运行程序通过通用VSTest成功运行了我的测试,但我从未能够生成代码覆盖率结果 .
虽然VS2010的测试功能在阅读时听起来很棒,但实现起来似乎过于复杂和沉重 . 多年来我一直在使用NUnit,取得了巨大的成功和极低的摩擦力 .
我决定尝试JetBrains dotCover beta,并在5分钟内下载,安装它,并能够非常成功地配置和使用它 . 它无缝地集成到ReSharper 5中,只适用于我的NUnit测试 . 代码突出显示是一个很好的可视化工具,可以快速定位未由测试执行的代码块 .
我尝试了在Google上找到的所有方法,然后决定尝试使用TestDriven.NET . 它工作得非常出色:正确克服解决方案,测试覆盖率并完成 . 说真的,这可不容易 .
我有同样的问题,我找到了解决问题的方法 . “代码覆盖率详细信息”对话框中显示的项目dll是要检测的错误程序集,这样做的结果是空的 . 所以你需要从另一个文件夹中获取该dll,它位于单元测试项目文件夹中!由于您添加了作为单元测试项目的参考,它将在那里 . 因此,例如,在我的情况下,我创建了一个简单的项目calced Calculator,然后创建了一个名为TestCalculator的单元测试项目,并在单元测试项目中添加了Calculator.dll作为参考 . 因此,在“代码覆盖率详细信息”对话框中,我单击“添加程序集”,然后从“.. \ TestCalculator \ bin \ Debug”文件夹中选择Calculator.dll . 这样就可以了 .
您需要在NUnit中关闭shadowcopy以使其工作 . 为此,请使用/ noshadow标志 .
例如C:\ Program Files(x86)\ NUnit 2.6 \ bin \ nunit-console-x86.exe MyLibrary.dll / noshadow
据我所知,它没有 . 我们的TestMatrix工具确实如此 .
从理论上说,它应该 . 甚至有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,我还不知道其他人是否可以重现这个问题 .
这个帖子中的许多答案对我帮助很大,但从多个答案中得到所有细节都是很难的 .
我编制了一份6个提示的清单,连同Scott Weinstein的明确答案为我做了诀窍:Running NUnit tests in Visual Studio 2010 with code coverage
虽然我不值得对这两个答案进行投票,但是请不要忘记复制:
Scott Weinstein
John和Scott McKay
莉莉
mnemosyn
赞成他们!
9 回答
这是可行的,但需要一些设置 . 我刚刚使用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 SUT 和 xUnitTest 的dll
启用"Instrument assemblies in test"
现在,当您运行VS2010测试时,它将正确检测测试dll,运行代码运行器并将信息收集到Visual Studio中 .
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) .
在摆弄了一个多小时后,我无法让它正常工作 . 我能够使用nunit-console.exe使用NUnit 2.5.5的工具正常运行通用测试 . 虽然NUnit控制台运行程序通过通用VSTest成功运行了我的测试,但我从未能够生成代码覆盖率结果 .
虽然VS2010的测试功能在阅读时听起来很棒,但实现起来似乎过于复杂和沉重 . 多年来我一直在使用NUnit,取得了巨大的成功和极低的摩擦力 .
我决定尝试JetBrains dotCover beta,并在5分钟内下载,安装它,并能够非常成功地配置和使用它 . 它无缝地集成到ReSharper 5中,只适用于我的NUnit测试 . 代码突出显示是一个很好的可视化工具,可以快速定位未由测试执行的代码块 .
我尝试了在Google上找到的所有方法,然后决定尝试使用TestDriven.NET . 它工作得非常出色:正确克服解决方案,测试覆盖率并完成 . 说真的,这可不容易 .
我有同样的问题,我找到了解决问题的方法 . “代码覆盖率详细信息”对话框中显示的项目dll是要检测的错误程序集,这样做的结果是空的 . 所以你需要从另一个文件夹中获取该dll,它位于单元测试项目文件夹中!由于您添加了作为单元测试项目的参考,它将在那里 . 因此,例如,在我的情况下,我创建了一个简单的项目calced Calculator,然后创建了一个名为TestCalculator的单元测试项目,并在单元测试项目中添加了Calculator.dll作为参考 . 因此,在“代码覆盖率详细信息”对话框中,我单击“添加程序集”,然后从“.. \ TestCalculator \ bin \ Debug”文件夹中选择Calculator.dll . 这样就可以了 .
您需要在NUnit中关闭shadowcopy以使其工作 . 为此,请使用/ noshadow标志 .
例如C:\ Program Files(x86)\ NUnit 2.6 \ bin \ nunit-console-x86.exe MyLibrary.dll / noshadow
据我所知,它没有 . 我们的TestMatrix工具确实如此 .
从理论上说,它应该 . 甚至有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,我还不知道其他人是否可以重现这个问题 .
这个帖子中的许多答案对我帮助很大,但从多个答案中得到所有细节都是很难的 .
我编制了一份6个提示的清单,连同Scott Weinstein的明确答案为我做了诀窍:Running NUnit tests in Visual Studio 2010 with code coverage
虽然我不值得对这两个答案进行投票,但是请不要忘记复制:
Scott Weinstein
John和Scott McKay
莉莉
mnemosyn
赞成他们!