如何轻松地将Jenkins与qUnit集成?我将使用真正的浏览器(如firefox和chrome)来运行测试。我的服务器运行在RedHat 6.1Linux上。我想我已经有了所有需要的插件/库,但我仍然不知道如何让它工作。我第一次和Jenkins一起工作(在服务器端)。
//编辑:
如果有人能分享如何建立覆盖报告的想法,那就太好了。
提前感谢:)。
发布于 2012-07-13 11:27:57
说Jenkins和QUnit只是拼图的一部分。您仍然需要一个web浏览器和一种将QUnit结果中的JUnit样式的XML文件放到磁盘上的方法。虽然有Selenium和Webdriver可以控制许多浏览器,但最简单的入门方法是使用PhantomJS (http://phantomjs.org/)。PhantomJS是一个基于webkit的无头浏览器,就是为了完成这样的任务。
如果您浏览本页面( http://code.google.com/p/phantomjs/wiki/WhoUsesPhantomJS )的“测试框架”部分,您将看到几个用于运行QUnit的脚本(其中一些支持JSCoverage )。phantomjs-jscoverage qunit脚本看起来将命中您想要命中的所有主要点,就像联合航空一样。这两个看起来都需要一些摆弄才能让它们运行起来。
遗憾的是,我还没有发现任何运行QUnit测试并获得Selenium、WebDriver或PhantomJS的JUnit输出的方法,这些方法不需要修改就可以工作。
编辑:几个月后的今天,我清楚地知道webdriver是Selenium的未来(当时我可能已经很清楚了,但事实并非如此)。此外,PhantomJS现在通过GhostDriver与WebDriver合作,因此只支持WebDriver并选择PhantomJS作为目标可能是未来最好的建议。
发布于 2013-07-19 04:10:39
这个问题已经发布一年多了,但是有一个针对TestSwarm的Jenkins plugin。我外行的理解是,您可以使用TestSwarm在所有主要浏览器上连续运行QUnit测试。它在GitHub上是开源的。
发布于 2013-08-16 07:20:04
披露:我是Arquillian项目的贡献者。
您可以使用Arquillian Qunit Extension开源扩展在Jenkins上执行QUnit测试。通常,在持续集成环境中可以轻松地使用Arquillian Qunit Extension。在这个GitHub repo上,您可以找到一个真实的示例,说明如何使用Arquillian Qunit Extension在Travis CI无头机器上执行Travis CI测试。
Arquillian是一个JBoss社区项目。
Arquillian Qunit Extension是一个自动化QUnit JavaScript测试的Arquillian扩展。Arquillian Qunit Extension与JUnit测试框架透明地集成在一起。
您可以在此README file上找到更多信息。此外,还有一个可以通过Maven执行的showcase,它展示了如何设置您的测试用例。
使用此扩展,您可以选择在QUnit测试执行期间部署存档和/或在一次执行中执行一个或多个QUnit测试套件。此外,您可以使用@InSequence注释定义QUnit测试套件的执行顺序。
例如,假设您想要执行两个QUnit测试套件( QUnit -testsajax.html和QUnit-testsdom.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
}
}https://stackoverflow.com/questions/7756644
复制相似问题