我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到一个完全符合TDD的合适选项。那么,是否存在完全兼容TDD的JavaScript单元测试工具?
当前回答
Chutzpah -一个JavaScript测试运行器
我创建了一个名为Chutzpah的开源项目,它是JavaScript单元测试的测试运行器。Chutzpah使您能够从命令行和Visual Studio内部运行JavaScript单元测试。它还支持在TeamCity持续集成服务器中运行。
其他回答
作为一个专业人士,你可以“在实际浏览器上运行”,但在我的经验中,这是一个缺点,因为它很慢。但是它的价值在于缺乏对非浏览器替代品的充分的JS模拟。如果你的JS足够复杂,只有在浏览器中测试就足够了,但还有其他几个选项可以考虑:
HtmlUnit:“它有相当好的JavaScript支持(还在不断改进中),甚至能够与相当复杂的AJAX库一起工作,根据你想使用的配置模拟Firefox或Internet Explorer。”如果它的模拟对您的使用来说足够好,那么它将比驱动浏览器快得多。
也许HtmlUnit有足够好的JS支持,但你不喜欢Java?那么:
敏捷:Watir API运行在HtmlUnit支持的JRuby上。
或类似的
Schnell: HtmlUnit的另一个JRuby包装器。
当然,如果HtmlUnit不够好,你必须驱动浏览器,那么你可能会考虑用Watir来驱动你的JS。
我们在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;
}
}
您可能还会对qooxdoo的单元测试框架感兴趣,qooxdoo是一个开源的RIA框架,类似于Dojo、ExtJS等,但拥有相当全面的工具链。
试试testrunner的在线版本。提示:点击左上角的灰色箭头(应该更明显)。它是一个“播放”按钮,运行选定的测试。
要了解更多关于定义单元测试的JS类的信息,请参阅在线API查看器。
对于自动化UI测试(基于Selenium RC),请查看模拟器项目。
google-js-test:
谷歌发布的JavaScript测试框架: https://github.com/google/gjstest
极快的测试启动和执行时间,无需运行 浏览器。 在通过和失败测试的情况下,干净、可读的输出。 基于浏览器的测试运行程序,可以简单地进行刷新 每当JS被改变。 样式和语义类似于谷歌Test for c++。 一个内置的模拟框架,只需要最少的样板代码(例如no $tearDown或$verifyAll),样式和语义基于谷歌 c++模拟框架。
目前还没有Windows的二进制文件
我们现在把Qunit与Pavlov和JSTestDriver一起使用。这种方法对我们很有效。
库尼特
巴甫洛夫,源
jsTestDriver, source
推荐文章
- 如何将FormData (HTML5对象)转换为JSON
- Object.hasOwnProperty()产生ESLint 'no-prototype-builtins'错误:如何修复?
- 如何比较单元测试中的列表
- 如何将Node.js流的内容读入字符串变量?
- 两个感叹号?
- 如何在JavaScript中计算今天之前三个月的日期?
- <script defer="defer">到底是如何工作的?
- 设置ajax超时
- 为什么JavaScript需要以“;”开头?
- 既然JavaScript和Java没有任何关系,它为什么被称为JavaScript ?
- 当你双击日文文本时,Chrome如何决定突出显示什么?
- 为什么.json()返回一个承诺?
- 在Xcode单元测试中使用@可测试时“没有这样的模块”
- 更改mocha的默认超时时间
- 如何设置一个iframe src属性从一个变量在AngularJS