我们如何在Jenkins (Hudson)上运行JavaScript jasmine测试而不加载JSP ?

How can we run JavaScript jasmine tests from Jenkins (Hudson) without loading a JSP?

本文关键字:测试 jasmine JavaScript JSP 加载 运行 Jenkins Hudson 我们      更新时间:2023-09-26

我们有一个富web客户端。我们的控制器和服务facade是用JavaScript和jquery编写的。在过去,它们可能是java。

为了在Jenkins/Hudson中运行JavaScript茉莉测试,我们使用java的junit和htmlunit来加载一个面向测试的jsp页面,其中包含茉莉规范。

当Htmlunit试图运行时,它会在尝试getPage()时爆炸,这可能是因为XML解析器类路径在我们的世界中是极具挑战性的。

我们只是希望能够从Jenkins运行JavaScript测试,并在JavaScript测试未通过时报告失败。我们只是使用jsp和htmlunit来运行JavaScript测试。我们是否可以将JavaScript测试和JavaScript代码加载到JavaScript引擎中,并使用Jenkins作为启动工具?如果有,怎么做?

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

茉莉记者也将是一个解决方案。例如,它具有通过PhantomJS运行的指令,并且它可以生成JUnit XML,以便Jenkins可以本地理解测试结果,绘制测试计数,持续时间和失败时间。

此外,通常随xvfb提供的"xvfb-run"包装器在这里有很大的帮助,因此您可以在真正的headless环境中执行"xvfb-run phantomjs.runner.sh…"。

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

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

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

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

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

Grunt是你的朋友

  • 使用grunt http://gruntjs.com/
  • with grunt jasmine https://github.com/gruntjs/grunt-contrib-jasmine
  • with nodejs http://nodejs.org/
  • 在jenkins使用https://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

得到了这个设置,这很好,而且这给了你一个地方让你的构建服务器做其他很好的事情比如部署,单元测试等等其他很好的事情

可以使用硒吗?这将使用一个真正的浏览器,并尽可能接近真实的环境。