JavaScript 单元测试和持续集成 2011

Posted

技术标签:

【中文标题】JavaScript 单元测试和持续集成 2011【英文标题】:JavaScript unit testing and continuous integration 2011 【发布时间】:2011-08-29 22:05:24 【问题描述】:

关于单元测试 javascript 代码并将其集成到持续集成环境中的大多数现有问题似乎可以追溯到时间的黎明(或至少 2008 年或 2009 年 :))。甚至最近的一个也是大约一年半前的:

Running JavaScript unit tests headlessly in a Continuous Integration build

在我开始尝试使用 js-test-driver 构建测试并将它们集成到 Jenkins(nee Hudson)之前,这仍然是 2011 年最好的方法吗?

我们有使用 JavaScript 和 jQuery、Lawnchair、lccache、Fancybox 等的代码。我认为我们不必测试所有这些,但如果我们可以为合理的子集构建测试,那就太好了。如果解决方案对backbone.js 满意,则可以加分。随着时间的推移,它看起来越来越有可能。

【问题讨论】:

【参考方案1】:

经过进一步研究,我们将尝试Jasmine BDD 进行测试。它出现在 Backbone.js 上的 PeepCode 视频以及关于使用 Jasmine 测试 Backbone.js 的优秀文章系列中:

http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html http://tinnedfruit.com/2011/04/26/testing-backbone-apps-with-jasmine-sinon-3.html

如果我们沿着这条路线走,看来我们可能不得不combine it with JsTestDriver so we can plug the whole mess into Jenkins。

【讨论】:

你们在测试套件中使用 loadFixtures(来自 jasmine-jquery)吗?如果是这样,这些如何/如何与 JsTestDriver 一起工作? @nav JsTestDriver 已被证明是在 Windows 上运行的一场噩梦,所以目前整个事情都已经摆在桌面上。我希望在某个时候从 Ops 手中夺取一台 Linux 服务器或虚拟机,这样我就可以让它继续工作。【参考方案2】:

你可以运行Selenium tests together with Jenkins。

【讨论】:

我喜欢已经有一个插件。 js-test-driver 似乎没有那么整洁,但看起来还不错:cjohansen.no/en/javascript/… AFAIK,Selenium 更多地用于 Web 应用程序的功能测试,而不是 JavaScript 的单元测试。 (如果我错了,请告诉我。)【参考方案3】:

供以后有人偶然发现此问题的参考:还有 TestSwarm(由 JQuery 团队使用)和 Buster.js(即将替换 JSTestDriver)

【讨论】:

以上是关于JavaScript 单元测试和持续集成 2011的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 服务器、机器人、持续集成和模拟器上的单元测试

Gitlab CI 持续集成的完整实践

持续集成+持续交付+持续部署

Jenkins持续集成「编译打包代码检查单元测试环境部署软件测试​」

基于Jenkins持续集成CI

持续集成实验--个人总结