我们有一个丰富的网络客户端。我们的控制器和服务外观用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作为开始它的东西吗?如果是这样,怎么样?
答案 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)
你能用硒吗?那实际上会使用真正的浏览器,并尽可能接近真实的环境。