【问题标题】:Run JavaScript unit tests inside of Visual Studio在 Visual Studio 中运行 JavaScript 单元测试
【发布时间】:2011-04-19 03:06:28
【问题描述】:

我一直在寻找在 Visual Studio IDE 中运行 JavaScript 单元测试的好方法。我目前使用TestDriven.net 运行我的 C# 单元测试,并且能够在输出窗格中快速获得我的测试结果非常方便。我很想为 JavaScript 找到类似的体验(最好使用 TestDriven.net)。

我已经阅读了有关让您执行 JavaScrpt 单元测试的不同解决方案。有些拥有自己的 JS 引擎,而像 JS-Test-Driver 这样的其他人能够将代码发送到浏览器并获取结果。但是我还没有看到集成到 VS 中的东西。

有谁知道可以做到这一点的扩展程序吗?

【问题讨论】:

    标签: javascript visual-studio unit-testing


    【解决方案1】:

    Microsoft 有一个链接建议使用 NodeJS 应用程序来运行我们的 JavaScript 单元测试。即使整个项目使用 C#,Visual Studio 的测试窗口现在也可以看到我们在该项目中编写的测试:

    推荐的测试库组合(单元测试/模拟/断言)之一是使用 Mocha / Sinon / Chai。对于这种风格,这里有一个有用的教程:

    另一个让 vanilla JS 在节点环境中工作的链接:

    【讨论】:

      【解决方案2】:

      九个月后,这个问题现在有了几个答案。

      created 是一个名为Chutzpah - A JavaScript Test Runner 的开源项目。 Chutzpah 使您能够从命令行和 Visual Studio 内部运行 JavaScript 单元测试。还支持在 TeamCity 持续集成服务器中运行。

      另一个解决方案是 Resharper 下一版本的一部分。在 Resharper 6 中有一个 integrated QUnit test runner

      【讨论】:

      • 创建您自己的测试运行器的好步骤 :)。看起来相当有趣。我个人一直使用 jstestdriver,因为它在使用构建服务器进行跨浏览器测试时非常棒。同样对于开发来说,在每次保存时运行所有测试的 snappy jsautotest 包装器非常棒。 jstdutil_a_ruby_wrapper_over_jstestdriver
      • 谢谢,我确实仔细研究了 jstestdriver,它跨多个浏览器运行的能力是非常理想的。我计划最终为 Chutzpah 添加使用 jstestdriver 和可能的其他测试驱动程序的能力。对于第一个版本,我使用了无头浏览器,因为它是自包含的。用户可以抓取这些位然后运行,而不必担心机器上有什么浏览器。
      • @Matthew Manela 太好了! :)
      • 这太棒了。仅供其他人使用,如果您的脚本位于不同的项目中,您可能希望在测试项目中添加类似的内容预构建事件: XCOPY "$(SolutionDir)My.Web\Scripts" "$(ProjectDir )脚本" /S /Y
      • Chutzpah 的另一个好处是它可以处理在 jstestdriver 中无法使用的异步测试。
      【解决方案3】:

      在寻找同样的东西时发现了这篇文章(和这个问题)。

      Integrating JavaScript Unit Tests with Visual Studio - Steven Walther

      它确实有很多工作要做,但它似乎确实带来了很好的互动。如果您正在开发一个 JavaScript 繁重的应用程序,那肯定是值得的。

      【讨论】:

        【解决方案4】:

        可以使用JsTestDriver 作为 Visual Studio 中的测试运行器。一旦服务器启动并连接了浏览器,就可以直接在 Visual Studio 中运行测试。

        然后控制台窗口将给出测试结果的输出。我不会在这里详细介绍实现细节,但the following how-to 应该足以让您开始实际设置 Visual Studio / JsTestRunner。

        chrome 和 Internet Explorer 的控制台输出(忽略我的错误测试名称):

        JsTestDriver 主要是一个验证多个浏览器的测试运行工具。要对 javascript 本身进行良好的单元测试,可以插入其他特定于测试的工具,例如 JasmineBDD (jasmine to jstestdriver adapter)。

        JsTestDriver 还提供了针对多个浏览器进行测试的可能性,作为持续集成服务器上的构建步骤,即:Hudson (Continuous Integration with Hudson and jstestdriver)。然后,这允许开发人员在本地开发时针对某个或两个浏览器进行测试,然后针对构建服务器上的任何范围的操作系统/浏览器组合验证结果。

        【讨论】:

        • 这很好。如果可以将其集成到现有的测试工具(如 TD.net 或 Resharper 的测试运行程序)中,那就太好了。另一个问题是它有点慢(它必须启动浏览器并附加到它们)。如果有一个类似于envjs.com 的选项,它带有一个我们可以挂钩到现有测试运行器的 API,那就太棒了。
        • 在本地开发过程中,您可以只打开浏览器并连接到服务器...允许更快的运行。它仍然运行所有测试,而不仅仅是当前上下文中的测试。
        • 我希望考虑将其连接到 TD.net。这肯定是值得的。我实际上没有使用过 envjs,所以不确定它实际上是如何工作的
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 2019-01-28
        • 2017-11-03
        • 1970-01-01
        相关资源
        最近更新 更多