Share via


我最喜爱的功能: VS 11 中单元测试的增强功能

[原文发表地址] My Favorite Features: Unit Testing Enhancements in Visual Studio 11

[原文发表时间] 2012-05-23 0:40

我正在撰写一系列博文,它是关于我个人在开发时我最喜爱的 Visual Studio 11 中的功能。在我的最近的一篇博文中,我谈到了 JavaScript 工具的增强功能。在这篇文章中,我想谈一谈单元测试的新功能。单元测试是开发过程中一个重要的步骤,是我们整个Visual Studio团队都在做的事情。在我个人的编码项目工作时,我也在编写单元测试。

第三方测试框架

那些对单元测试充满激情的开发人员会经常告诉你为什么他们最喜爱的框架是最好的。在 Visual Studio 11中,我们想为他们提供一流、 专注于开发人员的体验,那样他们可以使用任何他们想要的框架。若想要将单元测试框架添加到你的开发环境中,只需安装来自 Visual Studio 扩展管理器(如下图所示)的插件 或在线Visual Studio 库

image

在这一点上有许多可用的测试框架插件,其中包括:

  • NUnit
  • xUnit.net
  • MbUnit
  • Qunit
  • Jasmine

当然我们还有内置的针对.NET 代码的"MS -Test"测试框架,以及一个针对c + + 代码的新框架。

使用Nunit编写测试

让我们看一个NUnit的示例。NUnit 团队在测试版发布的同一天推出了一个针对 Visual Studio 11 Beta的适配器,最近还发布了一些重要bug 修复的更新。你可以在这里安装Visual Studio 11 Beta的 NUnit 测试适配器,着手使用它就如同安装它一样简单。

在此示例中,我使用的是一个测试项目,它是一个引用了Nunit.Frameework.dll的.NET Class Library 。这儿有一个Nunit的一个快速测试来显示它是如何运作的。

image

然后点击单元测试资源管理器窗口中的“运行所有”,并查看结果。

clip_image005

能够使用不同的第三方单元测试框架,甚至在单个解决方案中混合使用它们是多年来我们的客户的重大要求。现在你可以轻松地扩展你的体验来让你的团队使用他们所喜欢的单元测试引擎。

持续地运行测试

当你在编写测试和代码,并在中间的每个步骤运行测试时,你可能会发现不断地来回切换有点乏味。在 Visual Studio 11中,现在你可以配置测试资源管理器来在构建完每个成功的生成之后自动地运行单元测试。这真的很省时,因为它使测试运行起来感觉是该生成的一部分。

将你的单元测试认作为生成的一部分是件很自然的事情。很长时间以来,团队已经使用持续集成服务器来为每个签入构建和运行测试。现在,你可以在你的本地计算机上获得相同的结果。

若要打开它,只需切换到测试资源管理器工具栏中的"生成后运行测试"选项。

clip_image007

此功能很不错的是它让你集中在代码上,而不是在Visual Studio 中的其他工具窗口。只有出现失败时,你才会停下来看看周围,看看发生了什么事。

调试测试时出错

当某个测试失败时,有几种方法可以找出问题所在。首先,你可以查看测试runner,它提供了丰富的异常信息。如果信息不够充足的话,使用调试器来查看测试是非常有用的。在 Visual Studio 11中,你可以以调试其他托管测试的相同方式来调试NUnit 测试。为此,只需右击测试管理器中的测试,并选择"调试选定的测试"。

clip_image009

分析我的测试结果

对于单元测试,你可能想要执行很多分析,人们最常用的是代码覆盖率。我们大大简化了为单元测试而所需收集代码覆盖率信息的体验,并使它能够与第三方单元测试项目一起使用。正如下图所示,让我们选择测试管理器中的"分析代码覆盖率"。

clip_image011

现在,当运行结束后,它将打开 Visual Studio 代码覆盖率结果窗口,并突出显示了编辑器,这样我可以轻松地确定哪些地方可能需要更多测试覆盖率。

image

通过右击你所想要分析的测试,然后选择"分析代码覆盖率",你也可以轻松地查看一个测试 (或一组测试) 的覆盖率。将测试添加到现有的代码中时,这是很方便的。着色的区域让你看到你的代码的哪些部分完全由测试覆盖到了。

单元测试基于浏览器的 Javascript

我最近的一部分应用程序是基于浏览器的,并使用了很多Visual Studio 11中ASP .NET MVC 推出的新东西。如果你想要单元测试Javascript,你可以一起使用QUnitJQuery使用 的单元测试框架) 和Visual Studio 库上可用的Chutzpah适配器.

image

正如你所看到的, QUnit 测试被找到和执行了,它与其他的单元测试有着相同的体验。VS 11 单元测试的可扩展性支持另外的单元测试框架,像 Qunit一样简单地获取 (或编写)一个合适的插件来支持该系统。

单元测试本机 c + + 应用程序

如前所述,随着框中推出了新的 c + + 单元测试框架,我们也能够在 Visual Studio 11 中做本机的单元测试。我们真的很高兴为我们的 c + + 开发人员启用此支持,那样你不再需要使用"/ clr"标记,或回退到第三方框架。

下面是一个简单的例子:

clip_image002[7]

对于一个完整的示例应用程序来说,我建议签出Patterns & Practices团队的Hilo项目,现在包括本机 c + + 单元测试。

若要了解有关Visual Studio 11中本机单元测试的更多信息,请访问MSDN.

结论

在这篇文章中,我们预览了单元测试的一系列新改进。这些侧重于几个关键的客户目标:

1.灵活性 — —使用任何你的团队偏好的测试框架

2.简洁和一致性 — — 获取简单、 一致的体验,使开发人员聚焦于他们的工作

我希望你将有机会尝试Visual Studio 11中新的单元测试功能。至于有关详细信息,请访问MSDN.

希望大家喜欢 !

twitter.com/jlzander 上追随我的脚步