2011-10-13 27 views
5

Làm thế nào để dễ dàng tích hợp Jenkins với qUnit? Tôi sẽ sử dụng trình duyệt thực (như firefox và chrome) để chạy thử nghiệm. Máy chủ của tôi chạy trên RedHat 6.1 Linux. Tôi nghĩ rằng tôi có tất cả các plugin/thư viện cần thiết nhưng tôi vẫn không biết cách làm cho nó hoạt động. Tôi đang làm việc với Jenkins lần đầu tiên (ở phía máy chủ).Jenkins + qUnit

// Edit:

Nó sẽ là tuyệt vời nếu ai đó có thể chia sẻ ý tưởng làm thế nào để xây dựng báo cáo bảo hiểm quá.

Cảm ơn trước :).

+0

Duplicate của [câu hỏi này trên QUnit và Jenkins] (http://stackoverflow.com/questions/9482493/qunit-jscoverage-jenkings). Tóm lại: trong các hành động sau xây dựng cho công việc của bạn, hãy kiểm tra Xuất bản báo cáo kết quả kiểm tra JUnit và chỉ định các tệp XML junit của bạn (hoặc mẫu tệp của chúng). –

Trả lời

7

Nói Jenkins và QUnit chỉ là một phần của câu đố. Bạn vẫn cần một trình duyệt web và một cách để có được một tệp XML kiểu JUnit từ các kết quả QUnit trên đĩa. Trong khi có Selenium và Webdriver để kiểm soát nhiều trình duyệt, cách dễ nhất để bắt đầu là sử dụng PhantomJS (http://phantomjs.org/). PhantomJS là trình duyệt dựa trên webkit không đầu chỉ dành cho các tác vụ như thế này.

Nếu bạn duyệt qua phần "Khung kiểm tra" của trang này (http://code.google.com/p/phantomjs/wiki/WhoUsesPhantomJS), bạn sẽ thấy một số tập lệnh chạy QUnit (một số có hỗ trợ JSCoverage). Kịch bản phantomjs-jscoverage-qunit trông giống như nó sẽ đánh tất cả các điểm chính bạn muốn nhấn, cũng như United. Cả hai trông giống như họ sẽ yêu cầu một số fiddling để có được họ đi mặc dù.

Than ôi, tôi chưa phát hiện ra bất kỳ phương pháp nào để chạy thử nghiệm QUnit và nhận kết quả JUnit cho cả Selenium, WebDriver hoặc PhantomJS sẽ chỉ hoạt động mà không sửa đổi.

EDIT: Bây giờ vài tháng sau, nó đã trở nên rõ ràng với tôi rằng webdriver là tương lai của Selenium (nó có lẽ nên có được rõ ràng với tôi trở lại sau đó, nhưng nó đã không được). Ngoài ra, PhantomJS bây giờ làm việc với WebDriver qua GhostDriver, vì vậy chỉ hỗ trợ WebDriver và chọn PhantomJS làm mục tiêu có lẽ là lời khuyên tốt nhất trong tương lai.

0

Nếu sử dụng trình duyệt thực: Chạy đồng thời kiểm tra QUnit trong nhiều trình duyệt bằng cách sử dụng bunyip (https://github.com/ryanseddon/bunyip). Nó được xây dựng trên đầu trang của Yeti có thể cung cấp các báo cáo tương thích JUnit XML - do đó có thể đọc được bởi Jenkins

Nếu sử dụng PhantomJS (trình duyệt không đầu có tác dụng gần giống như một WebKit thực dựa một): Chỉ cần chia sẻ ở đây https://stackoverflow.com/a/17553889/998008 dạo qua trên thêm nhiệm vụ Á hậu thử nghiệm QUnit vào tập lệnh tạo Apache Ant. Jenkins chạy kịch bản trong khi kéo bản sao làm việc của dự án từ VCS. Bạn cần phải xác định trong dự án Jenkins vị trí của tệp đầu ra. Đầu ra tương thích với JUnit XML.

1

Đã hơn một năm kể từ khi câu hỏi này được đăng, nhưng có một số Jenkins plugin cho TestSwarm. Sự hiểu biết của giáo dân của tôi là bạn có thể sử dụng TestSwarm chạy kiểm tra QUnit của bạn liên tục trên tất cả các trình duyệt chính. Nó được mở nguồn trên GitHub.

1

Tiết lộ: Tôi là cộng tác viên của dự án Arquillian.

Bạn có thể sử dụng tiện ích mở rộng mã nguồn mở Arquillian Qunit Extension để thực hiện các kiểm tra QUnit trên Jenkins. Nói chung, Arquillian Qunit Extension có thể dễ dàng sử dụng trong môi trường tích hợp liên tục. Trên số GitHub repo này, bạn có thể tìm thấy ví dụ thực tế về cách Arquillian Qunit Extension có thể được sử dụng để thực hiện các kiểm tra QUnit trên Travis CI máy không có đầu.

Arquillian là một dự án cộng đồng JBoss.

Arquillian Qunit Extension là một tiện ích mở rộng Arquillian tự động hóa kiểm tra JavaScript QUnit. Arquillian Qunit Extension tích hợp một cách minh bạch với khung kiểm tra JUnit.

Bạn có thể tìm thêm thông tin về số này README file. Ngoài ra, có một showcase có thể được thực hiện thông qua Maven và cho thấy cách thiết lập trường hợp thử nghiệm của bạn.

Sử dụng tiện ích mở rộng này, bạn có tùy chọn triển khai lưu trữ trong quá trình thực hiện kiểm tra QUnit và/hoặc thực hiện một hoặc nhiều QUnit Test Suites trong một lần thực hiện. Hơn nữa, bạn có thể xác định thứ tự thực thi QUnit Test Suite bằng cách sử dụng chú thích @InSequence. Ví dụ: giả sử bạn muốn thực thi hai Thử nghiệm QUnit (qunit-tests-ajax.html và qunit-tests-dom.html) và các thử nghiệm QUnit của bạn được bao gồm trong các bộ kiểm tra này thực hiện các yêu cầu Ajax tới một Web Dịch vụ. Rõ ràng, bạn cần dịch vụ Web này để được lưu trữ trong khi các thử nghiệm được thực thi. Arquillian có thể tự động thực hiện việc triển khai Dịch vụ Web vào một vùng chứa. Trong trường hợp này trường hợp thử nghiệm Arquillian của bạn sẽ trông giống như:

@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 là một công cụ bảo hiểm mã tuyệt vời mà hoạt động tốt với QUnit. Tôi đã sử dụng nó trong khoảng một năm nay.

Để tích hợp Jenkins, tôi sử dụng lệnh grunt thoát với 0 nếu tác vụ grunt thất bại và 1 nếu nó trôi qua, vì vậy nó tích hợp hoàn toàn với Jenkins.

Không có plugin Grunt hiện có nào xử lý Blanket và QUnit cùng nhau, vì vậy, tôi sẽ tự viết một plugin Grunt của riêng mình. Các plugin hỗ trợ "thực thi" của một ngưỡng tối thiểu, hoặc người nào khác nhiệm vụ Grunt thất bại.

tôi đã viết một bài đăng blog với tất cả các chi tiết ở đây: http://www.geekdave.com/2013/07/20/code-coverage-enforcement-for-qunit-using-grunt-and-blanket/