与Visual Studio 2008提供的其他测试库相比有什么优势?

时间:2009-05-29 10:00:39

标签: visual-studio visual-studio-2008 unit-testing testing

或者换句话说,是否有任何理由安装NUnit或任何其他库并使用它而不是Visual Studio 2008附带的库?

7 个答案:

答案 0 :(得分:4)

自VS2005以来,我们一直在使用MS测试工具,并且由于MS工具存在一些问题,我确实将NUnit视为替代品。以下是我的一些发现:

MS测试工具专业人员

  • 很容易说服管理层使用MS提供的工具(当然这不是技术问题,但可能与许多公司有关)
  • 测试库,测试运行器和代码覆盖率都很好地与VS
  • 集成
  • Team Foundation设置中的中央报告和其他功能
  • 或多或少与NUnit相同的功能集(我觉得NUnit可能比MS测试工具更好,但差异不是很大)

MS测试工具缺点

  • VS2005 - 真的很慢,VS2008要好很多,但对于大型解决方案来说仍然很迟钝
  • 测试主机是STA,这使得测试多线程代码变得更加困难
  • VS支持有点笨重,因为它们支持同一界面中的测试优先和后续测试(因此有两个“新单元测试”命令 - >更多支持工作)

最后,由于以下几个原因,切换到NUnit并不吸引我们:

  • 代码更改,不是很多,但有大量的测试仍然需要一些工作
  • 每个开发人员席位的成本和复杂性增加:如果您将MS Test与NUnit交换,您也会失去测试运行者和代码覆盖率。两者都可以通过其他工具获得,例如R#,TestDriven.NET,NCover等,但这都增加了成本和复杂性。

答案 1 :(得分:3)

您是否希望没有Visual Studio 2008或仅拥有Express版本的开发人员运行单元测试?这对于开源项目尤其重要。如果是这样,我会选择其中一个开源单元测试框架。

答案 2 :(得分:1)

我认为在VS2008之前创建的大多数测试项目现在仍然会使用其他库。

对于较新的项目,我认为这取决于个人品味或公司政策。

此外,并非所有的Visual Studio版本都支持我认为的测试框架......

答案 3 :(得分:1)

我刚刚开始使用Visual Studio测试项目。我没有使用第三方测试产品的经验,但我发现Visual Studio对于大多数点来说似乎是完全足够的。

我认为它会归结为你的经历。

如果您已经知道如何使用NUnit和/或Rhino模拟,那么请使用它们。

如果您没有任何经验,或者没有太多关于获得它们的经验,那么请使用Visual Studio提供的。

一个有用的指针是,如果右键单击并从代码中的任何位置选择“创建单元测试”,Visual Studio将自动为您创建测试方法存根和访问器。如果您在编码之前没有遵循严格的TDD编写测试,则特别有用。

答案 4 :(得分:1)

一些优点:

  • (Jon's)您可以在VS 2008 Express中运行测试
  • 很多尖端功能都建立在免费库之上。例如。 BDD
  • 一般来说,在OSS测试框架方面有rich extensability
  • 您可以调试OSS框架的源代码,并在需要时进行更改。
  • 可以说,一些测试框架like xUnit更容易学习并实施更清晰的无副作用测试模式。

鉴于令人敬畏的testdriven.net支持几乎所有的OSS测试框架,您可以获得与VS 2008相同(如果不是更好)的IDE集成。

答案 5 :(得分:1)

几个笔记RE MSTest ...

1)整个团队致力于将功能推向市场(这实际上是他们的全职工作)。这些人最终拥有用于编写文档,集成点到其他Microsoft产品的资源,讨论来自一般测试社区的进展以及这些进入Microsoft测试产品的方式,以及总体而言,这是一个全面,功能齐全的产品单元。当你选择MSTest时,你可以充分利用这些人的努力以及投资的美元。

2)Web测试和压力测试。还有一个与Web测试和压力测试相关的整个其他专用组(与MSTest组分开)。这些是微软对Test堆栈的巨大补充。它们提供了模拟在线用户,使用复杂带宽操作,检查服务器性能等方法。 Web和压力测试的东西是真正让MS测试堆难以理解的一个重要原因。

3)功能测试...... Ms正在添加完整的UI自动化测试支持,这将真正完善他们的产品。在早期版本的MS测试工具方面缺少它,但必须考虑到一套完全集成的UI测试工具将真正增加对MS测试技术投资的整体存量。

4)如上所述 - 影响测试。从开发人员的角度来看 - 这很酷。如上所述 - 工具选择在单元测试的代码覆盖率上传递的正确的单元测试。所以开发编辑和现有的类等等......该工具专门指向影响签入的测试。顺便说一句 - 这是你从我在#1中提到的研究中获得的一个很好的例子。

.... BTW - 完全披露 - 我直接在VSTS上工作 - 并且完全认为它是我家庭的一部分 - 所以是的 - 我在偏袒方面完全妥协。

至于非MS测试工具......

A)您不能忽视其他公司或整个开源社区的努力。如果你一方面考虑整个开源社区和所有其他公司的努力VS几个微软产品团队,真的MS仍然会失败。然而,MS的努力大多是协调的(虽然并非总是如此)并且确实倾向于至少具有软集成点(尽管再次,并非总是如此)。

B)其他供应商/开源社区的转换速度更快。女士正在改善 - 但是 - 没有 - 其他社区和供应商在推销产品方面做出了MS的步伐。这与测试工具创新没有什么不同。

C)*****其他测试工具将使用非ms技术堆栈来完成大量工作。女士工具在某些情况下会“好” - 而在其他情况下完全错过了船。很多时候,使用MS工具获得的大票不是其他技术(阅读NON-MS)技术堆栈 - ......其他供应商和开源社区(显然)确实提供了更具吸引力的支持。

最后...我建议:如果你在MS堆栈上并且投资了Visual Studio - 特别是MSDN - 因此在购买MS工具方面有大量的访问和投资。 ......真的,使用某些形式的MS开发和测试工具是没有道理的。我甚至没有讨论测试工具集成和其他VSTS的使用 - 圣牛。

然而 - 如果您正在使用其他堆栈,请不要在MS堆栈/ MS提供的开发人员工具中进行端到端投资...如果您在其他操作系统等的商店中运营桌面或服务器安装等的巨额交易......那么MS工具集的次要元素可能值得一试 - 但显然从MS测试工具方向开始将会更加困难/昂贵。

希望这有帮助。

答案 6 :(得分:0)

NUnit允许您以定义的顺序运行测试,而Visual Studio测试框架同时运行测试。