如何在不加载JSP的情况下从Jenkins(Hudson)运行JavaScript jasmine测试?

时间:2011-09-30 10:42:01

标签: javascript jquery unit-testing jenkins jasmine

我们有一个丰富的网络客户端。我们的控制器和服务外观用coffeescript(JavaScript)和jquery编写。过去他们本来就是java。

要从Jenkins / Hudson运行我们的JavaScript jasmine测试,我们使用java的junit和htmlunit来加载一个包含jasmine规范的面向测试的jsp页面。

当Htmlunit尝试运行时,由于XML解析器类路径在我们的世界中追踪非常具有挑战性,因此它可能会因尝试getPage()而崩溃。

我们只是希望能够从Jenkins运行我们的JavaScript测试,并且如果JavaScript测试未通过则报告失败。我们只是使用jsp和htmlunit来运行JavaScript测试。我们可以将JavaScript测试和javascript代码加载到一个JavaScript引擎中,使用Jenkins作为开始它的东西吗?如果是这样,怎么样?

5 个答案:

答案 0 :(得分:14)

听起来像是在Java环境中。我的jasmine-maven-plugin可能非常适合。

答案 1 :(得分:8)

Jasmine Reporters也是一个解决方案。它有通过PhantomJS无头运行的指令,它可以生成JUnit XML,因此Jenkins可以原生地理解测试结果,绘制测试计数,持续时间和故障随时间变化。

此外,通常提供xvfb的“xvfb-run”包装器在这里提供了很大帮助,因此您可以在真正的无头环境中执行“xvfb-run phantomjs.runner.sh ...”。

答案 2 :(得分:6)

我之前通过使用名为jasmine-node的node.js插件运行测试来解决此问题

这个解决方案当然需要node.js和一些节点模块来正确运行jasmine测试。没有真正的浏览器运行测试,而是使用名为jsdom的模块模拟​​,它基本上创建了一个无头浏览器,更具体地说,是一个DOM,测试可以与之交互。

jQuery的节点模块,下划线以及其他的节点模块,所以这些也可以进行测试。如果你宁愿在浏览器中运行测试,你甚至可以跳过整个浏览器仿真,尽管我发现它与自动Jenkins测试相比太麻烦了。

jasmine-node生成jUnit测试报告,Jenkins可以解释得很好。

我刚刚意识到有一些jenkins-jasmine-node插件可以简化此过程。

答案 3 :(得分:1)

Grunt是你的朋友

得到了这个设置并且它非常好,而且这给了你一个开始让你的构建服务器做其他好事的地方,比如部署,单元测试等你知道的其他好东西

答案 4 :(得分:0)

你能用硒吗?那实际上会使用真正的浏览器,并尽可能接近真实的环境。