当前位置:  开发笔记 > 编程语言 > 正文

使用JavaScript进行自动单元测试

如何解决《使用JavaScript进行自动单元测试》经验,为你挑选了3个好方法。

我正在尝试将一些JavaScript单元测试合并到我的自动构建过程中.目前JSUnit与JUnit配合得很好,但它似乎是放弃软件,缺乏对AJAX,调试和超时的良好支持.

有没有人幸运(使用ANT)单元测试库,如YUI测试,JQuery的QUnit或jQUnit(http://code.google.com/p/jqunit/)?

注意:我使用自定义构建的AJAX库,因此Dojo的DOH问题在于它要求您使用自己的AJAX函数调用和事件处理程序来处理任何AJAX单元测试.



1> Karl..:

我正准备开始在我正在开发的新项目上进行Javascript TDD.我目前的计划是使用qunit进行单元测试.虽然可以通过在浏览器中刷新测试页来运行开发测试.

为了持续集成(并确保测试在所有浏览器中运行),我将使用Selenium在每个浏览器中自动加载测试工具,并读取结果.这些测试将在每次签入源代码控制时运行.

我还将使用JSCoverage来获取测试的代码覆盖率分析.这也将通过Selenium实现自动化.

我目前正在设置它.一旦我将设置敲定,我将更详细地更新此答案.


测试工具:

qunit

JSCoverage


我确实得到了这个设置,但使用了略有不同的技术.我使用JS测试驱动程序使用QUnit适配器(http://code.google.com/p/js-test-driver/wiki/QUnitAdapter)在每个浏览器(而不是Selenium)中运行单元测试.另一个在我现在的雇主我使用Jasmine测试框架,并在Jasmine Node(http://github.com/mhevery/jasmine-node)中运行测试,这避免了使用浏览器的延迟.我使用自己的小ruby项目(http://github.com/karl/loris)对每次更改运行测试.

2> Alexandre Vi..:

有很多javascript单元测试框架(jsUnit,scriptaculous,...)但jsUnit是我所知道的唯一一个可以与自动构建一起使用的框架.

如果您正在进行"真正的"单元测试,则不需要AJAX支持.例如,如果您使用的是RPC ajax框架(如DWR),则可以轻松编写模拟函数:

   function mockFunction(someArg, callback) {
      var result = ...; // some treatments   
      setTimeout(
function() { callback(result); }, 300 // some fake latency
); }

是的,JsUnit确实处理超时:在jsUnit测试中模拟时间



3> groodt..:

我是js-test-driver的忠实粉丝

它在CI环境中运行良好,能够捕获实际的浏览器以进行跨浏览器测试.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有