詹金斯+ qUnit

时间:2011-10-13 15:34:22

标签: linux continuous-integration jenkins qunit

如何轻松地将Jenkins与qUnit集成?我将使用真正的浏览器(如firefox和chrome)来运行测试。我的服务器在RedHat 6.1 Linux上运行。我想我有所有需要的插件/库但我仍然不知道如何让它工作。我第一次和Jenkins一起工作(在服务器端)。

//编辑:

如果有人可以分享如何构建报道报告,那将是非常好的。

提前致谢:)。

5 个答案:

答案 0 :(得分:7)

说Jenkins和QUnit只是这个难题的一部分。您仍然需要一个Web浏览器以及从QUnit结果到磁盘获取JUnit样式XML文件的方法。虽然有Selenium和Webdriver用于控制众多浏览器,但最简单的入门方法是使用PhantomJS(http://phantomjs.org/)。 PhantomJS是一款基于Web的无头浏览器,仅适用于此类任务。

如果您浏览此页面的“测试框架”部分(http://code.google.com/p/phantomjs/wiki/WhoUsesPhantomJS),您将看到几个用于运行QUnit的脚本(其中一些脚本具有JSCoverage支持)。 phantomjs-jscoverage-qunit脚本看起来会击中你要击中的所有主要点,就像曼联一样。两个看起来都需要一些摆弄才能让他们继续前进。

唉,我还没有发现任何运行QUnit测试和获取Selenium,W​​ebDriver或PhantomJS的JUnit输出的方法,这些方法只能在不修改的情况下工作。

编辑:现在几个月后,我已经清楚地知道,webdriver是Selenium的未来(当时我可能已经清楚了,但事实并非如此)。此外,PhantomJS现在可以通过GhostDriver与WebDriver协同工作,因此仅支持WebDriver并选择PhantomJS作为目标可能是未来最好的建议。

答案 1 :(得分:1)

此问题发布已超过一年,但Jenkins pluginTestSwarm。我的外行人的理解是你可以使用TestSwarm在所有主流浏览器中连续运行你的QUnit测试。它是GitHub开源的。

答案 2 :(得分:1)

披露:我是Arquillian项目的撰稿人。

您可以使用Arquillian Qunit Extension开源扩展程序在Jenkins上执行QUnit测试。通常,Arquillian Qunit Extension可以在连续集成环境中轻松使用。在这个GitHub repo上,你可以找到一个真实的例子,说明Arquillian Qunit Extension如何用于在Travis CI无头机器上执行QUnit测试。

Arquillian是一个JBoss社区项目。

Arquillian Qunit ExtensionArquillian扩展,可自动进行QUnit JavaScript测试。 Arquillian Qunit Extension与JUnit测试框架透明地集成。

您可以找到有关此README file的更多信息。此外,还有一个showcase可以通过Maven执行,并展示了如何设置测试用例。

使用此扩展,您可以选择在QUnit测试执行期间部署存档和/或在单次执行中执行一个或多个QUnit测试套件。此外,您可以使用@InSequence注释定义QUnit Test Suite执行顺序。

例如,假设您要执行两个QUnit测试套件(qunit-tests-ajax.html和qunit-tests-dom.html),并且这些测试套件中包含的QUnit测试对Web服务执行Ajax请求。显然,在执行测试时,您需要将此Web服务置于主机上。 Arquillian可以自动执行Web Service到容器的部署。在这种情况下,您的Arquillian测试用例将如下所示:

 @RunWith(QUnitRunner.class)
 @QUnitResources("src/test/resources/assets")
 public class QUnitRunnerTestCase {

     private static final String DEPLOYMENT = "src/test/resources/archives/ticket-monster.war";

     /**
      * Creates the Archive which will be finally deployed on the AS.
      *
      * @return Archive<?>
      */
     @Deployment()
     public static Archive<?> createDeployment() {
         return ShrinkWrap.createFromZipFile(WebArchive.class, new File(DEPLOYMENT));
     }

     /**
      * Execute the qunit-tests-ajax.html QUnit Test Suite.
      */
     @QUnitTest("tests/ticketmonster/qunit-tests-ajax.html")
     @InSequence(1)
     public void qunitAjaxTests() {
         // empty body - only the annotations are used
     }

     /**
      * Execute the qunit-random-tests.html QUnit Test Suite.
      */
     @QUnitTest("tests/ticketmonster/qunit-random-tests.html")
     @InSequence(2)
     public void qunitRandomTests() {
         // empty body - only the annotations are used
     }
}

答案 3 :(得分:0)

如果使用真正的浏览器: 使用bunyip(https://github.com/ryanseddon/bunyip)同时在多个浏览器中运行QUnit测试。它构建在Yeti之上,可以提供与JUnit XML兼容的报告 - Jenkins可以读取

如果使用PhantomJS(无头浏览器,其行为几乎像真正的基于WebKit的浏览器): 刚刚在这里分享了https://stackoverflow.com/a/17553889/998008关于在Apache Ant构建脚本中添加QUnit测试运行器任务的演练。 Jenkins在从VCS中提取项目工作副本的同时运行脚本。您需要在Jenkins项目中指定输出文件的位置。输出与JUnit XML兼容。

答案 4 :(得分:0)

BlanketJS是一款出色的代码覆盖率工具,可与QUnit配合使用。我已经使用它大约一年了。

对于Jenkins集成,我使用grunt,如果grunt任务失败则退出0,如果通过则退出1,因此它与Jenkins完美集成。

没有现成的Grunt插件可以同时处理Blanket和QUnit,所以我最终编写了自己的Grunt插件。该插件支持“强制执行”最低阈值,否则Grunt任务失败。

我写了一篇博客文章,其中包含所有详细信息:http://www.geekdave.com/2013/07/20/code-coverage-enforcement-for-qunit-using-grunt-and-blanket/