Linux 詹金斯&x2B;昆特

Linux 詹金斯&x2B;昆特,linux,continuous-integration,jenkins,qunit,Linux,Continuous Integration,Jenkins,Qunit,如何轻松地将Jenkins与qUnit集成?我将使用真正的浏览器(如firefox和chrome)来运行测试。我的服务器运行在RedHat 6.1 Linux上。我想我已经有了所有需要的插件/库,但我仍然不知道如何让它工作。我第一次和詹金斯一起工作(在服务器端) //编辑: 如果有人也能分享如何构建覆盖率报告的想法,那就太好了 提前感谢:)。说詹金斯和昆特只是谜题的一部分。您仍然需要一个web浏览器和一种从QUnit结果到磁盘上获取JUnit样式XML文件的方法。虽然Selenium和Webdr

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

//编辑:

如果有人也能分享如何构建覆盖率报告的想法,那就太好了


提前感谢:)。

说詹金斯和昆特只是谜题的一部分。您仍然需要一个web浏览器和一种从QUnit结果到磁盘上获取JUnit样式XML文件的方法。虽然Selenium和Webdriver可以控制许多浏览器,但最简单的入门方法是使用PhantomJS(http://phantomjs.org/). PhantomJS是一款基于webkit的无头浏览器,专门用于此类任务

如果您浏览本页()的“测试框架”部分,您将看到几个用于运行QUnit的脚本(有些脚本支持JSCoverage)。phantomjs JSQunit脚本看起来会击中你想击中的所有要点,就像曼联一样。不过,这两种方法看起来都需要一些技巧才能奏效

唉,我还没有发现任何方法可以运行QUnit测试并获得Selenium、WebDriver或PhantomJS的JUnit输出,这些方法都可以不经修改就工作

编辑:几个月后的今天,我清楚地认识到webdriver是Selenium的未来(当时我可能应该很清楚,但事实并非如此)。此外,PhantomJS现在通过GhostDriver与WebDriver配合使用,因此只支持WebDriver并选择PhantomJS作为目标可能是今后最好的建议。

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

如果使用PhantomJS(无头浏览器,其行为几乎类似于真正的基于WebKit的浏览器):
刚才在这里分享了将QUnit测试运行程序任务添加到ApacheAnt构建脚本的演练。Jenkins在从VCS提取项目工作副本时运行脚本。您需要在Jenkins项目中指定输出文件的位置。输出与JUnit XML兼容。

这个问题发布已经一年多了,但是有一个问题需要解决。我的外行的理解是,您可以使用TestSwarm在所有主要浏览器上连续运行QUnit测试。它是开源的。

披露:我是阿奎利安项目的贡献者

您可以使用开源扩展在Jenkins上执行QUnit测试。通常,可以轻松地在连续集成环境中使用。在此基础上,您可以找到一个如何在无头机器上执行QUnit测试的真实示例

是一个JBoss社区项目

is是一个自动化QUnit JavaScript测试的扩展。与JUnit测试框架透明集成

你可以找到更多关于这方面的信息。此外,还有一个可以通过Maven执行的测试用例,它展示了如何设置您的测试用例

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

例如,假设您希望执行两个QUnit测试套件(QUnit-tests-ajax.html和QUnit tests dom.html),并且这些测试套件中包含的QUnit测试执行对Web服务的ajax请求。显然,在执行测试时,您需要该Web服务位于主机上。Arquillian可以自动将Web服务部署到容器中。在这种情况下,您的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
     }
}
@RunWith(QUnitRunner.class)
@QUnitResources(“src/test/resources/assets”)
公共类QUnitRunnerTestCase{
私有静态最终字符串部署=“src/test/resources/archives/ticketmonster.war”;
/**
*创建最终将部署在AS上的存档。
*
*@return存档
*/
@部署()
公共静态存档createDeployment(){
返回ShrinkWrap.createFromZipFile(WebArchive.class,新文件(部署));
}
/**
*执行qunit-tests-ajax.html qunit测试套件。
*/
@QUnitTest(“tests/ticketmonster/QUnittests ajax.html”)
@顺序(1)
公共无效qunitAjaxTests(){
//空正文-仅使用注释
}
/**
*执行qunit-random-tests.html qunit测试套件。
*/
@QUnitTest(“tests/ticketmonster/qunit random tests.html”)
@顺序(2)
公共无效测试(){
//空正文-仅使用注释
}
}
是一款出色的代码覆盖工具,可与QUnit配合使用。我已经用了大约一年了

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

目前还没有一个Grunt插件可以同时处理毯子和QUnit,所以我最终编写了自己的Grunt插件。该插件支持“强制”最小阈值,否则Grunt任务将失败

我在这里写了一篇博客文章,里面有所有的细节:

重复的。简而言之:在作业的构建后操作中,检查发布JUnit测试结果报告并指定JUnit XML文件(或其文件模式)。