使用JavaScript进行自动单元测试

Chr*_*ald 60 javascript ant jquery automation unit-testing

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

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

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

Kar*_*arl 24

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

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

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

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


测试工具:

  • 我确实得到了这个设置,但使用了略有不同的技术.我使用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)对每次更改运行测试. (4认同)

Ale*_*oor 20

有很多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测试中模拟时间


gro*_*odt 13

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

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


Eli*_*nor 5

我最近读了 Bruno 的一篇文章,使用 JSUnit 并在此基础上创建了一个 JsMock 框架......非常有趣。我正在考虑使用他的工作来开始对我的 JavaScript 代码进行单元测试。

模拟 JavaScript 或如何在浏览器环境之外对 JavaScript 进行单元测试


Ing*_*ald 5

我刚刚让 Hudson CI 运行 JasmineBDD(无头),至少对于纯 JavaScript 单元测试来说是这样。

(Hudson 通过 shell 运行 Java,运行 Envjs,运行 JasmineBDD。)

不过,我还没有让它像原型一样与大型库很好地配合。