我们有一个丰富的网络客户端。我们的控制器和服务外观是用 CoffeeScript (JavaScript) 和 jquery 编写的。在过去,它们是java。
要从 Jenkins/Hudson 运行 JavaScript jasmine 测试,我们使用 java 的 junit 和 htmlunit 加载包含 jasmine 规范的面向测试的 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”包装器在这里很有帮助,因此您可以在真正的无头环境中执行“xvfb-run phantomjs.runner.sh ...”。
我之前通过使用名为 jasmine-node
的 Node.js 插件运行测试解决了这个问题这个解决方案当然需要 node.js 和一些节点模块才能正确运行 jasmine 测试。没有真正的浏览器运行测试,而是使用名为 jsdom 的模块进行模拟,该模块基本上创建了一个无头浏览器,更具体地说,是一个 DOM,测试可以与之交互。
有 jQuery、下划线和其他可能的节点模块,因此这些也可以进行测试。如果您更愿意在浏览器中运行测试,您甚至可以跳过整个浏览器模拟,尽管我发现它与自动化 Jenkins 测试相比太麻烦了。
jasmine-node 生成 jUnit 测试报告,Jenkins 可以很好地解释该报告。
我刚刚意识到有一些 jenkins-jasmine-node 插件可以简化这个过程。
Grunt 是你的朋友
有了这个设置,它真的很好,而且这给了你一个开始让你的构建服务器做其他好事情的地方,比如部署、单元测试等,你知道,其他好事情
可以使用硒吗?那实际上会使用真正的浏览器并尽可能接近真实环境。