【问题标题】:What advantage have other testing libraries over the one provided by Visual Studio 2008?与 Visual Studio 2008 提供的测试库相比,其他测试库有什么优势?
【发布时间】:2009-05-29 10:00:39
【问题描述】:

或者以另一种方式,是否有任何理由安装 NUnit 或任何其他库并使用它而不是 Visual Studio 2008 附带的库?

【问题讨论】:

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


    【解决方案1】:

    自 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 等其他工具获得,但这都增加了成本和复杂性。

    【讨论】:

    • 如果你对 MS 工具很感兴趣 - VS2010 提供“测试影响” - 根据你的单元测试和代码覆盖率结果以及在你的机器上进行的本地更改,它可以告诉你要进行哪些其他测试运行(测试可能受到影响的其他代码。dotnet.org.za/willy/archive/2008/11/26/…。(个人意见...Go NUnit)
    • 当然,只有拥有 MSTests 才能获得“测试影响”——这是唯一的区别,拥有 MSTests 会在 VSTS 环境中为您带来更多好处(如代码覆盖率等)。
    • 就我个人而言,我也会选择 NUnit,但我当然可以理解为什么我们会做出这样的决定。我们有大量的开发人员,因此成本,尤其是复杂性是我们关心的问题。
    【解决方案2】:

    您是否希望没有 Visual Studio 2008 或只有 Express 版本的开发人员运行单元测试?这与开源项目特别相关。如果是这样,我会选择其中一种开源单元测试框架。

    【讨论】:

    • 好点。我仍然想从技术角度了解一下,因为我只考虑自己在宠物项目上使用 VS2008。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      我刚刚开始使用 Visual Studio 测试项目。我没有使用第三方测试产品的经验,但我发现 Visual Studio 似乎完全可以满足大多数要求。

      我认为这可以归结为您的经验。

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

      如果您没有任何经验,或者不太想获得经验,那么请使用 Visual Studio 提供的。

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

      【讨论】:

        【解决方案5】:

        一些优点:

        • (Jon's)您可以在 VS 2008 Express 中运行测试
        • 许多前沿功能都建立在免费库之上。例如。 BDD
        • 在谈到 OSS 测试框架时,通常有rich extensability
        • 您可以调试 OSS 框架的源代码,并根据需要进行更改。
        • 可以说,一些测试框架like xUnit 更容易学习并执行更清晰的无副作用测试模式。

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

        【讨论】:

          【解决方案6】:

          几个笔记 RE MSTest...

          1) 有一整支团队致力于将功能推向市场(这实际上是他们的全职工作)。这些人最终获得了用于编写文档、将点集成到其他 Microsoft 产品、讨论一般测试社区的进步以及这些如何进入 Microsoft 测试产品以及总体上致力于这项工作的功能齐全的产品单元的资源。当您选择 MSTest 时,您将充分受益于这些人的努力和 Ms 投资的资金。

          2) Web 测试和压力测试。还有一个专门的小组(独立于 MSTest 小组)从事 Web 测试和压力测试。这些是 Microsoft 对测试堆栈的巨大补充。这些提供了模拟在线用户、使用复杂的带宽操作、检查服务器性能等等的方法。 Web 和压力测试是真正让 MS 测试堆栈认真了解的一个重要原因。

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

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

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

          至于非 MS 测试工具...

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

          B) 其他供应商/开源社区的周转速度更快。女士正在改进——但——没有——其他社区和供应商在将产品推向市场方面确实超过了 MS。这与测试工具创新没有什么不同。

          C) ***** 其他测试工具将在非 ms 技术堆栈方面做得很好。在某些情况下,女士工具会“正常”——而在其他情况下,则完全错过了这条船。很多时候,其他技术(阅读非 MS)技术堆栈并没有从 MS 工具中获得大笔胜利 - ...其他供应商和开源社区(显然)确实提供了更具吸引力的支持。

          最后...我建议:如果您在 MS 堆栈上并且对 Visual Studio 进行了投资(尤其是在 MSDN 上),因此在购买 MS 工具方面拥有大量访问权限和投资。 ... 真的,使用某种形式的 MS 开发和测试工具是不费吹灰之力的。我什至没有讨论 VSTS 其余部分的测试工具集成和使用 - 圣牛。

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

          希望这会有所帮助。

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 不正确,您可以在 vsts 中订购您的测试,尽管它需要一些跳圈。但是,由于单元测试应该彼此独立,问题是您为什么希望/需要它们按顺序运行。如果您确实需要这样做,那么您的单元测试有问题
            • 仅仅因为您正在使用单元测试框架并不意味着您将仅将其用于单元测试。我没有意识到你可以在 vsts 中订购测试
            猜你喜欢
            • 2011-06-12
            • 2010-09-09
            • 2012-08-21
            • 1970-01-01
            • 2013-07-03
            • 1970-01-01
            • 2011-06-08
            • 2016-07-04
            • 2011-03-13
            相关资源
            最近更新 更多