2011-10-13 2 views
5

젠킨스를 qUnit과 쉽게 통합하는 방법은 무엇입니까? 나는 실제 브라우저 (파이어 폭스와 크롬 같은)를 사용하여 테스트를 진행할 것이다. 내 서버는 RedHat 6.1 Linux에서 실행됩니다. 모든 플러그인/라이브러리가 필요하다고 생각하지만 여전히 작동하게 만드는 방법을 모른다. 젠킨스와 함께 일하고 있습니다. (서버 쪽에서).Jenkins + qUnit

// 편집 :

사람이 너무 커버리지 보고서를 작성하는 방법을 생각을 공유 할 수 있다면 그것은 좋은 것입니다.

미리 감사드립니다. :)

+0

중복 (http://stackoverflow.com/questions/9482493/qunit-jscoverage-jenkings) [QUnit와 젠킨스에이 질문] :

나는 여기에 모든 세부 사항이 블로그 포스트를 작성했습니다. 즉, 작업에 대한 빌드 후 작업에서 JUnit 테스트 결과 보고서 게시를 선택하고 junit XML 파일 (또는 파일 패턴)을 지정하십시오. –

답변

7

Saying Jenkins와 QUnit은 퍼즐의 일부일뿐입니다. 웹 브라우저와 QUnit 결과에서 JUnit 스타일의 XML 파일을 디스크로 가져 오는 방법이 필요합니다. 수많은 브라우저를 제어하는 ​​Selenium과 Webdriver가 있지만 가장 쉬운 방법은 PhantomJS (http://phantomjs.org/)를 사용하는 것입니다. PhantomJS는 이런 작업을위한 헤드리스 웹킷 기반 브라우저입니다.

이 페이지의 "테스트 프레임 워크"섹션 (http://code.google.com/p/phantomjs/wiki/WhoUsesPhantomJS)을 탐색하면 QUnit을 실행하기위한 몇 가지 스크립트가 표시됩니다 (일부는 JSCoverage를 지원합니다). phantomjs-jscoverage-qunit 스크립트는 유나이티드 (United)와 마찬가지로 당신이 치고 싶은 주요 포인트를 모두 치는 것처럼 보입니다. 두 사람은 마치 그들이가는 것을 얻기 위해 약간의 바이올린을 필요로하는 것처럼 보입니다.

아아, 나는 QUnit 테스트를 실행하고 Selenium, WebDriver 또는 PhantomJS 용 JUnit 출력을 수정하지 않고 그냥 실행하는 방법을 발견하지 못했습니다.

EDIT : 이제 몇 달 후, webdriver가 Selenium의 미래라는 것을 분명히 알게되었습니다. (그 당시에 분명했을 것입니다. 또한 PhantomJS는 이제 GhostDriver를 통해 WebDriver와 함께 작동하므로 WebDriver 만 지원하고 PhantomJS를 대상으로 선택하는 것이 향후 가장 좋은 조언 일 것입니다.

0

실제 브라우저를 사용하는 경우 : bunyip (https://github.com/ryanseddon/bunyip)을 사용하여 여러 브라우저에서 동시에 QUnit 테스트를 실행하십시오. 그것은의 JUnit XML 호환 보고서를 제공 할 수있는 예티의 상단에 내장되어 있습니다 - 따라서 읽을 젠킨스

에 의해

(거의 하나를 기반으로 실제 웹킷 같은 역할을 헤드리스 브라우저) PhantomJS를 사용하는 경우 : 그냥 여기 https://stackoverflow.com/a/17553889/998008 공유 워크를 통해에 Apache Ant 빌드 스크립트에 QUnit 테스트 러너 태스크 추가. Jenkins는 VCS에서 프로젝트 작업 복사본을 가져 오는 동안 스크립트를 실행합니다. Jenkins 프로젝트에서 출력 파일의 위치를 ​​지정해야합니다. 출력은 JUnit XML과 호환됩니다.

1

이 질문이 게시 된 지 1 년이 지났지 만 TestSwarm에 대해 Jenkins plugin이 있습니다. 제 평신도는 TestSwarm을 사용하여 모든 주요 브라우저에서 QUnit 테스트를 지속적으로 실행할 수 있다는 사실을 알고 있습니다. 오픈 소스는 GitHub입니다.

1

공개 : 나는 Arquillian 프로젝트의 기고가입니다.

Arquillian Qunit Extension 오픈 소스 확장을 사용하여 Jenkins에서 QUnit 테스트를 실행할 수 있습니다. 일반적으로 Arquillian Qunit Extension은 연속 통합 환경에서 쉽게 사용할 수 있습니다. 이 GitHub repoTravis CI 헤드리스 머신에서 Arquillian Qunit Extension을 사용하여 QUnit 테스트를 수행하는 방법의 실제 예를 찾을 수 있습니다.

Arquillian은 JBoss 커뮤니티 프로젝트입니다.

Arquillian Qunit Extension은 QUnit JavaScript 테스트를 자동화하는 Arquillian 확장입니다. Arquillian Qunit Extension은 JUnit 테스팅 프레임 워크와 투명하게 통합됩니다.

자세한 내용은 README file에서 확인할 수 있습니다. 또한 Maven을 통해 실행될 수있는 showcase이 있으며 테스트 케이스를 설정하는 방법을 보여줍니다.

이 확장을 사용하면 QUnit 테스트 실행 중에 아카이브를 배포하거나 하나 이상의 QUnit 테스트 스위트를 한 번에 실행할 수 있습니다. 또한 @InSequence 주석을 사용하여 QUnit Test Suite 실행 순서를 정의 할 수 있습니다.

예를 들어 두 개의 QUnit 테스트 스위트 (qunit-tests-ajax.html 및 qunit-tests-dom.html)를 실행하고이 테스트 스위트에 포함 된 QUnit 테스트가 웹에 Ajax 요청을 수행한다고 가정합니다 서비스. 테스트가 실행되는 동안이 웹 서비스가 호스트에 있어야합니다. 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 
    } 
} 
0

BlanketJS이 QUnit 잘 작동 환상적인 코드 검사 도구입니다 같은 이러한 경우 귀하의 Arquillian 테스트 케이스는 볼 것이다. 나는 약 1 년 동안 그것을 사용 해왔다.

Jenkins 통합의 경우 grunt 작업을 실패하면 0으로 종료하고 통과하면 1을 사용하므로 Jenkins와 완벽하게 통합됩니다.

담요와 QUnit을 함께 처리하는 기존의 Grunt 플러그인이 없었기 때문에 자신의 Grunt 플러그인을 작성했습니다. 플러그인이 최소 임계 값의 "강제"를 지원하거나 그렇지 않으면 Grunt 작업이 실패합니다. 의 http://www.geekdave.com/2013/07/20/code-coverage-enforcement-for-qunit-using-grunt-and-blanket/