2010-02-02 36 views
29

Tôi gặp sự cố khi tải plugin Cobertura để chạy thử nghiệm tích hợp trong Maven. Câu trả lời gần nhất cho câu hỏi này tôi đã tìm thấy là http://jira.codehaus.org/browse/MCOBERTURA-86. Tuy nhiên, vấn đề vẫn là một lỗi mở. Tôi đã thử cấu hình được đề xuất bởi Stevo vào ngày 03/04/09, nó không hoạt động.Chạy thử nghiệm tích hợp với plugin Cobertura Maven

My POM

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.3-SNAPSHOT</version> 
      <reportSets> 
      <reportSet> 
       <reports> 
        <report>cobertura-integration</report> 
       </reports> 
      </reportSet> 
      </reportSets>    
     </plugin> 
    </plugins> 
</reporting> 

mà là do cách chính xác giống như các đoạn cấu hình được cung cấp bởi Stevo.

+2

nơi bạn đã đặt các bài kiểm tra tích hợp của mình (ví dụ: src/it/java hoặc src/test/java) và cách thử thực hiện các bài kiểm tra? –

+1

Làm thế nào để bạn chạy CNTT của bạn? Sử dụng một mô-đun riêng biệt? Sử dụng maven-failsafe-plugin? Trong một hồ sơ riêng biệt? –

Trả lời

3

Hãy thử để cấu hình một giai đoạn thực hiện cho plugin như

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>2.5.1</version> 
     <configuration> 
      <formats> 
      <format>xml</format> 
      </formats> 
     </configuration> 
     <executions> 
      <execution> 
      <id>cobertura-check</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>cobertura</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 

Bằng cách đó nó hoạt động như một nét duyên dáng cho tôi.

+0

Điều này không phù hợp với tôi. – Tom

+0

Điều này dường như không hoạt động ... – mmalmeida

-2

tôi đã thử nghiệm tích hợp làm việc với Maven 3.0.3 và Cobertura-maven-plugin 2.5.1 bằng cách cấu hình maven-failsafe-plugin để chạy trong test giai đoạn:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.12</version> 
    <executions> 
     <execution> 
      <phase>test</phase> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+9

Điều này đánh bại mục đích của việc có plugin không an toàn: nếu bạn đang chạy failsafe trong giai đoạn thử nghiệm, bạn cũng có thể có các bài kiểm tra của bạn làm bài kiểm tra thường xuyên (được đảm bảo) , chạy trên giai đoạn thử nghiệm. – mmalmeida

2

Sau khi một số nghiên cứu tìm thấy một cấu hình làm việc niêm yết từ http://jira.codehaus.org/browse/MCOBERTURA-86 Hãy chắc chắn để gọi này với

mvn clean deploy -PbuildWithIntegrationTestCoverage 

     <profile> 
     <!-- Build with IntegrationTestcoverage => instrument classes with cobertura before integrationtests starts. --> 
     <id>buildWithIntegrationTestCoverage</id> 
     <activation> 
      <property> 
       <name>buildWithIntegrationTestCoverage</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>cobertura-maven-plugin</artifactId> 
        <version>2.5.2</version> 
        <executions> 
         <execution> 
          <id>instrument-classes</id> 
          <phase>package</phase> 
          <goals> 
           <goal>instrument</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <!-- Add cobertura as dependency to the jetty-plugin (required for instrumented classes) --> 
       <plugin> 
        <groupId>org.mortbay.jetty</groupId> 
        <artifactId>maven-jetty-plugin</artifactId> 
        <dependencies> 
         <dependency> 
          <groupId>org.codehaus.mojo</groupId> 
          <artifactId>cobertura-maven-plugin</artifactId> 
          <version>2.5.2</version> 
          <type>jar</type> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
7

từ quan điểm của tôi, các Cobertura maven Plugin có hai nhược điểm lớn. Nó có không có mục tiêu báo cáo duy nhất, tất cả các bài kiểm tra đơn vị sẽ chạy bên cạnh chắc chắn một lần nữa. Nó tạo phạm vi mã cho các bài kiểm tra đơn vị chỉ.

Tôi đang sử dụng plugin JaCoCo maven ngay bây giờ. JaCoCo sử dụng lại các báo cáo chắc chắn và/hoặc báo cáo không an toàn để tạo phạm vi mã từ thử nghiệm đơn vị và/hoặc tích hợp. Hơn nữa, JaCoCo có tích hợp Jenkins tốt. Đây là một ví dụ mà JaCoCo sử dụng các bài kiểm tra đơn vị chắc chắn và kiểm tra tích hợp không thành công.

<build> 
    <plugins> 
     <!-- Unit tests --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
     </plugin> 

     <!-- Integration tests --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.16</version> 
      <executions> 
       <execution> 
        <phase>integration-test</phase> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <!-- 
      The JaCoCo plugin generates a report about the test coverage. In contrast to the cobertura plugin 
      JaCoCo can be configured to generate code coverage for integration tests. Another advantage of JaCoCo 
      is that it reports only, cobertura executes all unit tests again (beside the surefire plugin). 
     --> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.6.4.201312101107</version> 
      <executions> 
       <execution> 
        <id>jacoco-prepare-agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-prepare-agent-integration</id> 
        <goals> 
         <goal>prepare-agent-integration</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-report</id> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-integration</id> 
        <goals> 
         <goal>report-integration</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-check</id> 
        <goals> 
         <goal>check</goal> 
        </goals> 
        <configuration> 
         <rules /> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

Mẹo hay. Sau một chút tìm kiếm, tôi cũng đã tìm ra cách tạo một báo cáo phủ sóng mã kết hợp đầu ra của bài kiểm tra đơn vị và tích hợp với JaCoCo, bằng cách sử dụng mục tiêu hợp nhất. – JeroenHoek

+0

Tôi đã không tìm ra cách làm cho JaCoco bỏ qua tầm thường. Bạn có biết làm thế nào? – jeremyjjbrown

+0

Sử dụng kiến ​​với trình cắm maven-antrun-plugin, xem câu trả lời của tôi. Ngoài ra, các đại lý JVM của JaCoCo không phải luôn luôn là một khả năng. Dừng JVM (Tôi nghĩ đây là cách duy nhất để nhận được báo cáo bảo hiểm) không phải lúc nào cũng là những gì bạn muốn hoặc có thể làm. Cobertura có coberturaFlush.war để xóa dữ liệu bảo hiểm và giữ JVM chạy. – Dormouse

0

tôi thấy rằng việc sử dụng maven-antrun-plugin cho các dự án đa mô-đun bao gồm tích hợp và giao diện người dùng kiểm tra sự là giải pháp tốt nhất. Tôi đã sử dụng this post để có được mục tiêu Ant xuống và đi từ đó. Hiện tại, chúng tôi có các báo cáo về phạm vi mã cho mỗi mô-đun và đã hợp nhất một báo cáo có chứa tất cả các thử nghiệm.

1

Đối với bất cứ ai ngại về vấn đề này thông qua Google - Cobertura-maven-plugin started supporting integration tests in version 2.7, được xuất bản năm 2015.

Trích dẫn trang web của họ:

Lên đến phiên bản 2.6 chỉ có một báo cáo có sẵn : cobertura, cung cấp cho bạn báo cáo bảo hiểm cho các bài kiểm tra đơn vị của bạn. Vì chỉ có , bạn không phải định cấu hình theo bất kỳ cách nào.

Bắt đầu với phiên bản 2.7, báo cáo mới đã được thêm: kiểm tra tích hợp cobertura, cung cấp cho bạn báo cáo bảo hiểm cho các bài kiểm tra tích hợp của bạn. [..]

Cả hai báo cáo đều được bật theo mặc định.Nếu bạn muốn các hành vi cũ chỉ với một báo cáo bảo hiểm cho các bài kiểm tra đơn vị của bạn, bạn cần phải cấu hình plugin ...

Nếu bạn, như tôi đã làm, báo cáo Cobertura chạy bằng mvn cobertura:cobertura, bạn sẽ cần để làm mvn cobertura:cobertura-integration-test để nhận các bài kiểm tra tích hợp. Bạn có thể kiểm tra chi tiết từ số manual page của nó.

Các vấn đề liên quan