用于TDD的JavaScript单元测试工具

时间:2008-11-19 02:35:50

标签: javascript unit-testing tdd

我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到合适的选项来保持完全符合TDD标准。那么,是否有一个完全符合TDD标准的JavaScript单元测试工具?

13 个答案:

答案 0 :(得分:1491)

答案 1 :(得分:63)

看一下the Dojo Object Harness (DOH) unit test framework,这是几乎与框架无关的JavaScript单元测试工具,并且没有任何Dojo依赖项。在Unit testing Web 2.0 applications using the Dojo Objective Harness处有一个非常好的描述。

如果您想自动化UI测试(许多开发人员的痛处) - 请查看doh.robot (临时更新。更新:其他链接http://dojotoolkit.org/reference-guide/util/dohrobot.html和{ {3}} (临时向下)。后者专为验收测试而设计。 更新:

参考文章解释了如何使用它们,如何使用鼠标和/或键盘模拟用户与UI交互,以及如何记录测试会话,以便您可以在以后自动“播放”它。

答案 2 :(得分:34)

Chutzpah - A JavaScript Test Runner

我创建了一个名为Chutzpah的开源项目,它是JavaScript单元测试的测试运行器。 Chutzpah使您可以从命令行和Visual Studio内部运行JavaScript单元测试。它还支持在TeamCity持续集成服务器中运行。

答案 3 :(得分:26)

Wikipedia条目的JavaScript部分List of Unit Testing Frameworks提供了可用选项的列表。它表示它们是在客户端,服务器端还是两者都工作。

答案 4 :(得分:14)

BusterJS

还有来自Christian Johansen的BusterJS,他是Test Driven Javascript Development和Sinon框架的作者。来自网站:

  

Buster.JS是一个新的JavaScript测试框架。它通过在实际浏览器中自动化测试运行(想想JsTestDriver)以及Node.js测试来进行浏览器测试。

答案 5 :(得分:10)

谷歌-JS-测试:

Google发布的JavaScript测试框架: https://github.com/google/gjstest

  
      
  • 极快的测试启动和执行时间,无需运行   浏览器。
  •   
  • 在通过和未通过测试的情况下,清晰,可读的输出。
  •   
  • 可以简单刷新的browser-based test runner   每当JS被改变时。
  •   
  • 类似于Google Test的C ++样式和语义。
  •   
  • 内置的模拟框架,需要最少的样板代码(例如,没有   $tearDown$verifyAll)具有基于Google C++ Mocking Framework的样式和语义。
  •   

目前没有适用于Windows的二进制文件

答案 6 :(得分:8)

我们现在正在使用Qunit和Pavlov以及JSTestDriver。这种方法对我们很有用。

QUnit

Pavlovsource

jsTestDriversource

答案 7 :(得分:6)

你作为专业人士“在实际浏览器上运行”,但根据我的经验,这是一个骗局,因为它很慢。但是有价值的是缺乏足够的JS仿真来自非浏览器的替代品。可能是因为如果你的JS很复杂,只有浏览器测试就足够了,但还有更多选择需要考虑:

HtmlUnit:“它具有相当好的JavaScript支持(不断改进),即使使用非常复杂的AJAX库也可以工作,根据您要使用的配置模拟Firefox或Internet Explorer。”如果它的仿真效果足够您使用,那么它将比驱动浏览器快得多。

但也许HtmlUnit有足够的JS支持,但你不喜欢Java?然后可能:

Celerity:在由HtmlUnit支持的JRuby上运行的Watir API。

或类似地

Schnell:另一个HtmlUnit的JRuby包装器。

当然,如果HtmlUnit不够好而且您必须驾驶浏览器,那么您可能会考虑Watir to drive your JS

答案 8 :(得分:6)

YUI也有testing framework。来自Yahoo!的This video剧院是一个很好的介绍,虽然有很多关于TDD的基础知识。

此框架是通用的,可以针对任何JavaScript或JS库运行。

答案 9 :(得分:3)

您可能也对作为qooxdoo的一部分的单元测试框架感兴趣,这是一个类似于Dojo,ExtJS等的开源RIA框架,但具有相当全面的工具链。

试用testrunner的在线版本。提示:点击左上方的灰色箭头(应该更明显)。这是一个运行所选测试的“播放”按钮。

要了解有关允许您定义单元测试的JS类的更多信息,请参阅在线API viewer

对于自动化UI测试(基于Selenium RC),请查看Simulator项目。

答案 10 :(得分:3)

你应该看看env.js。有关如何使用env.js编写单元测试的示例,请参阅my blog

答案 11 :(得分:3)

我们将JUnit集成添加到我们的Java到Javascript代码生成器ST-JS(http://st-js.org)。框架为测试代码和单元测试生成相应的Javascript,并将代码发送到不同的浏览器。

不需要单独的服务器,因为单元测试运行器打开所需的http端口(并在测试完成后关闭它)。该框架操纵Java堆栈跟踪,以便JUnit Eclipse插件正确显示失败的断言。以下是jQuery和Mockjax的一个简单示例:

@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")

@Scripts({ "classpath://jquery.js",
       "classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
  @Test
  public void myTest() {
    $.ajaxSetup($map("async", false));
    $.mockjax(new MockjaxOptions() {
      {
        url = "/restful/fortune";
        responseText = new Fortune() {
          {
            status = "success";
            fortune = "Are you a turtle?";
          }
        };
      }
    });

    $.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
      @Override
      public void $invoke(Fortune response, String p2, JQueryXHR p3) {
        if (response.status.equals("success")) {
          $("#fortune").html("Your fortune is: " + response.fortune);
        } else {
          $("#fortune").html("Things do not look good, no fortune was told");
        }

      }
    });
    assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
  }

  private static class Fortune {
    public String status;
    public String fortune;
  }
}

答案 12 :(得分:2)

MochiKit有一个名为SimpleTest的测试框架似乎已经流行起来。 这是一个blog post from the original author