Linux 詹金斯&x2B;昆特
如何轻松地将Jenkins与qUnit集成?我将使用真正的浏览器(如firefox和chrome)来运行测试。我的服务器运行在RedHat 6.1 Linux上。我想我已经有了所有需要的插件/库,但我仍然不知道如何让它工作。我第一次和詹金斯一起工作(在服务器端) //编辑: 如果有人也能分享如何构建覆盖率报告的想法,那就太好了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
提前感谢:)。说詹金斯和昆特只是谜题的一部分。您仍然需要一个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文件(或其文件模式)。