17

Tôi đang tạo báo cáo không an toàn và chắc chắn với maven bằng plugin JaCoCo, nhưng tôi chỉ có thể quản lý để đưa chúng vào các báo cáo riêng biệt. Tôi muốn có một cái nhìn tổng thể bao quát (kết hợp giữa cả Kiểm thử Đơn vị và Kiểm thử Tích hợp).Sáp nhập tích hợp và báo cáo thử nghiệm đơn vị với JaCoCo

Sau những gì tôi nghĩ là một tìm kiếm google toàn diện, tôi chỉ có thể tìm thấy một cách để làm điều này với Sonar. Có cách nào đơn giản hơn để thực hiện việc này không?

câu hỏi liên quan: Maven separate Unit Test and Integration Tests

Trả lời

8

Bạn nên có một cái nhìn vào tài liệu của JaCoCo Maven Plugin chứa một mục tiêu merge.

+0

Câu trả lời hay! Vui lòng xem ví dụ mã của tôi bên dưới. –

13

Không phải là câu trả lời bạn đang tìm kiếm, nhưng vẫn ...

Trong hầu hết các trường hợp, bạn không nên kết hợp bảo hiểm từ đơn vị và hội nhập thử nghiệm.

Giá trị của các bài kiểm tra đơn vị là chúng cải thiện thiết kế ứng dụng của bạn và đảm bảo rằng các trường hợp góc của mã của bạn đang hoạt động chính xác. Bạn nên cố gắng có một phạm vi chi nhánh cao của các bài kiểm tra đơn vị của bạn.

Giá trị của các thử nghiệm tích hợp của bạn là chúng đảm bảo rằng các trường hợp sử dụng chính của ứng dụng của bạn đang hoạt động chính xác và toàn bộ ngăn xếp được tích hợp chính xác. Bạn nên cố gắng có một vùng phủ sóng chức năng cao cho các bài kiểm tra tích hợp của bạn. (Nhưng nó là khá khó khăn để đo phạm vi chức năng với một công cụ).

Nếu bạn cần kiểm tra tích hợp để cải thiện mức độ phù hợp của chi nhánh, đó là dấu hiệu mạnh mẽ cho thấy bạn nên xem xét thiết kế mã của bạn. Và nếu bạn đã có mức độ phù hợp chi nhánh cao mà không có thử nghiệm tích hợp, việc thêm chúng không nên sửa đổi đáng kể các chỉ số của bạn.

thoải mái xuống bỏ phiếu câu trả lời này vì nó là một chút của chủ đề và khá khăng khăng ...

+0

vẫn là điểm thú vị! – Jpnh

11

Gần đây tôi đã thực hiện điều này: sau khi một số đau đầu và rất nhiều thử nghiệm, tôi có một cấu hình mà tác phẩm đẹp mắt.

    <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>${jacoco.version}</version> 
        <executions> 
         <execution> 
          <id>pre-unit-test</id> 
          <goals> 
           <goal>prepare-agent</goal> 
          </goals> 
          <configuration> 
           <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile> 
           <propertyName>surefireArgLine</propertyName> 
          </configuration> 
         </execution> 
         <execution> 
          <id>pre-integration-test</id> 
          <goals> 
           <goal>prepare-agent-integration</goal> 
          </goals> 
          <configuration> 
           <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile> 
           <propertyName>testArgLine</propertyName> 
          </configuration> 
         </execution> 

         <execution> 
          <id>post-integration-test</id> 
          <phase>post-integration-test</phase> 
          <goals> 
           <goal>report</goal> 
          </goals> 
          <configuration> 
           <dataFile>${project.build.directory}/coverage-reports/jacoco-it.exec</dataFile> 
           <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory> 
          </configuration> 
         </execution> 
         <execution> 
          <id>post-unit-test</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>report</goal> 
          </goals> 
          <configuration> 
           <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile> 
           <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory> 
          </configuration> 
         </execution> 
         <execution> 
          <id>merge-results</id> 
          <phase>verify</phase> 
          <goals> 
           <goal>merge</goal> 
          </goals> 
          <configuration> 
           <fileSets> 
            <fileSet> 
             <directory>${project.build.directory}/coverage-reports</directory> 
             <includes> 
              <include>*.exec</include> 
             </includes> 
            </fileSet> 
           </fileSets> 
           <destFile>${project.build.directory}/coverage-reports/aggregate.exec</destFile> 
          </configuration> 
         </execution> 
         <execution> 
          <id>post-merge-report</id> 
          <phase>verify</phase> 
          <goals> 
           <goal>report</goal> 
          </goals> 
          <configuration> 
           <dataFile>${project.build.directory}/coverage-reports/aggregate.exec</dataFile> 
           <outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate</outputDirectory> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <argLine>${surefireArgLine}</argLine> 
       <skipTests>${skip.unit.tests}</skipTests> 
       <includes> 
        <include>**/*UT.java</include> 
        <include>**/*MT.java</include> 
        <include>**/*Test.java</include> 
       </includes> 
       <skipTests>${skipUTMTs}</skipTests> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.12.4</version> 
      <configuration> 
       <skipTests>${skipTests}</skipTests> 
       <skipITs>${skipITs}</skipITs> 
       <argLine>${testArgLine}</argLine> 
       <excludes> 
        <exclude>**/*UT*.java</exclude> 
       </excludes> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

Như bạn có thể thấy, có 6 cách thực thi Jacoco riêng biệt để chạy thử nghiệm, hợp nhất các tệp và tạo báo cáo tổng hợp. Ngày đầu của cấu hình Jacoco, bạn cũng cần phải cấu hình Surefire và Failsafe để lấy một đối số từ Jacoco (Surefire chạy các bài kiểm tra đơn vị và Failsafe chạy các bài kiểm tra tích hợp).

Tất cả cấu hình mà tôi đã sử dụng nên ở đó, những gì bạn làm với nó là kiến ​​trúc thiết kế của bạn để làm cho nó phù hợp với yêu cầu mong muốn của bạn. Cá nhân, tôi khuyên bạn nên xem xét những gì tôi loại trừ và bao gồm trong chắc chắn và failsafe nếu bạn đang gặp vấn đề với các tập tin không được đọc.

+0

Tôi khuyên bạn không nên thay đổi các quy ước đặt tên mặc định của plugin maven-surefire và trình cắm maven-failsafe vì nó không cần thiết. Giữ các quy ước ... Và tôi thực sự khuyên bạn nên sử dụng cùng một phiên bản cho maven-surefire và maven-failsafe hơn nữa các phiên bản mới nhất ... – khmarbaise

+0

Có lẽ là một khuyến nghị xứng đáng. Tôi chỉ muốn cung cấp cho người dùng một ví dụ về mã hoạt động thay vì "Này, hãy kiểm tra 'cái này' ra ngoài". –

+1

@BobVanDeHey cảm ơn rất nhiều về đoạn mã này. Nó rất hữu ích cho tôi để thiết lập cấu hình JaCoCo của tôi. – gvdm

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