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

问题描述 投票:0回答:5

我们有一个丰富的网络客户端。我们的控制器和服务外观是用 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 来启动它吗?如果是这样,怎么办?

javascript jquery unit-testing jenkins jasmine
5个回答
14
投票

听起来您正处于 Java 环境中。我的 jasmine-maven-plugin 可能很合适。


8
投票

茉莉花记者也是一个解决方案。例如,它具有通过 PhantomJS 无头运行的说明,并且可以生成 JUnit XML,以便 Jenkins 可以本地理解测试结果,绘制测试计数、持续时间和随时间变化的失败情况。

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


6
投票

我之前通过使用名为 jasmine-node

的 Node.js 插件运行测试解决了这个问题

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

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

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

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


1
投票

Grunt 是你的朋友

有了这个设置,它真的很好,而且这给了你一个开始让你的构建服务器做其他好事情的地方,比如部署、单元测试等,你知道,其他好事情


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.