我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到一个完全符合TDD的合适选项。那么,是否存在完全兼容TDD的JavaScript单元测试工具?
当前回答
Chutzpah -一个JavaScript测试运行器
我创建了一个名为Chutzpah的开源项目,它是JavaScript单元测试的测试运行器。Chutzpah使您能够从命令行和Visual Studio内部运行JavaScript单元测试。它还支持在TeamCity持续集成服务器中运行。
其他回答
Wikipedia条目的JavaScript部分,单元测试框架列表,提供了可用选项的列表。它指示它们是工作在客户端、服务器端还是两者都工作。
我们在Java to Javascript代码生成器ST-JS (http://st-js.org)中添加了JUnit集成。框架为测试的代码和单元测试生成相应的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;
}
}
看看Dojo Object Harness (DOH)单元测试框架,它是用于JavaScript单元测试的基本框架独立的工具,没有任何Dojo依赖项。在使用Dojo Objective Harness进行Web 2.0应用程序的单元测试中有很好的描述。
如果你想自动化UI测试(这是许多开发人员的痛点),请查看doh。机器人(暂时关闭。更新:其他链接http://dojotoolkit.org/reference-guide/util/dohrobot.html)和dijit。Robotx(暂时关闭)。后者是为验收测试设计的。 更新:
参考文章解释了如何使用它们,如何模拟用户使用鼠标和/或键盘与UI交互,以及如何记录测试会话,以便稍后可以自动“播放”它。
您可能还会对qooxdoo的单元测试框架感兴趣,qooxdoo是一个开源的RIA框架,类似于Dojo、ExtJS等,但拥有相当全面的工具链。
试试testrunner的在线版本。提示:点击左上角的灰色箭头(应该更明显)。它是一个“播放”按钮,运行选定的测试。
要了解更多关于定义单元测试的JS类的信息,请参阅在线API查看器。
对于自动化UI测试(基于Selenium RC),请查看模拟器项目。
MochiKit有一个名为SimpleTest的测试框架,它似乎已经流行起来。 这是原作者的一篇博客文章。
推荐文章
- python中的assertEquals和assertEqual
- 如何在Typescript中解析JSON字符串
- Javascript reduce()在对象
- 在angularJS中& vs @和=的区别是什么
- 错误"Uncaught SyntaxError:意外的标记与JSON.parse"
- JavaScript中的querySelector和querySelectorAll vs getElementsByClassName和getElementById
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError: