我们如何在Jenkins (Hudson)上运行JavaScript jasmine测试而不加载JSP ?
How can we run JavaScript jasmine tests from Jenkins (Hudson) without loading a JSP?
我们有一个富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
得到了这个设置,这很好,而且这给了你一个地方让你的构建服务器做其他很好的事情比如部署,单元测试等等其他很好的事情
可以使用硒吗?这将使用一个真正的浏览器,并尽可能接近真实的环境。
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- Jasmine单元测试在监视服务方法时失败
- 如何使用Jasmine测试Knockout.js点击绑定
- 如何在jasmine测试中为有角度的项目注入依赖项
- 测试iFrame的位置.href是在jasmine单元测试中设置的
- 在Karma Jasmine单元测试用例中检查日期格式
- Jasmine:测试setTimeout函数会抛出一个错误
- 如何通过 phantomjs 可靠地执行利用 requirejs 的 Jasmine 测试
- 当使用Jasmine在JS中测试AJAX调用时,.andReturn(..)和.respondWith(
- 使用jasmine测试JavaScript回调函数
- 如何在Jasmine/Rect中测试带有范围输入的“onChange”事件
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 使用$httpBackend测试Jasmine/Karma的AngularJS不起作用
- 如何测试Jasmine设置代码
- 测试Jasmine测试是否失败
- expect - response在AngularJS单元测试(Jasmine)中不起作用
- 重构单元测试(Jasmine)
- 测试Jasmine中的Rails Route
- 使用特定的keyCode测试Jasmine中的keydown事件
- 单元测试——jasmine, javascript