我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到合适的选项来保持完全符合TDD标准。那么,是否有一个完全符合TDD标准的JavaScript单元测试工具?
答案 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的开源项目,它是JavaScript单元测试的测试运行器。 Chutzpah使您可以从命令行和Visual Studio内部运行JavaScript单元测试。它还支持在TeamCity持续集成服务器中运行。
答案 3 :(得分:26)
Wikipedia条目的JavaScript部分List of Unit Testing Frameworks提供了可用选项的列表。它表示它们是在客户端,服务器端还是两者都工作。
答案 4 :(得分:14)
还有来自Christian Johansen的BusterJS,他是Test Driven Javascript Development和Sinon框架的作者。来自网站:
Buster.JS是一个新的JavaScript测试框架。它通过在实际浏览器中自动化测试运行(想想JsTestDriver)以及Node.js测试来进行浏览器测试。
答案 5 :(得分:10)
Google发布的JavaScript测试框架: https://github.com/google/gjstest
- 极快的测试启动和执行时间,无需运行 浏览器。
- 在通过和未通过测试的情况下,清晰,可读的输出。
- 可以简单刷新的browser-based test runner 每当JS被改变时。
- 类似于Google Test的C ++样式和语义。
- 内置的模拟框架,需要最少的样板代码(例如,没有
$tearDown
或$verifyAll
)具有基于Google C++ Mocking Framework的样式和语义。
目前没有适用于Windows的二进制文件
答案 6 :(得分:8)
答案 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)
答案 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。