2010-05-17 23 views
27

Tôi thấy plugin surefire-report rất không phù hợp với phong cách làm việc của mình. Tôi làm sạch dự án mọi lúc và tôi không muốn dành 5 phút để xây dựng lại toàn bộ trang web mỗi lần tôi muốn xem báo cáo thử nghiệm trong trình duyệt của mình.Có plugin HTML Junit khá hợp lý cho Maven không?

Nếu tôi nhập mvn surefire-report:report-only, báo cáo được tạo quá xấu và không thể đọc được.

Điều tôi đang tìm kiếm giống như tác vụ JUnitReport của kiến. Có ai sẵn sàng không?

Trả lời

25

Thật vậy, việc tạo toàn bộ trang web tại mỗi công trình xây dựng rõ ràng không phải là một lựa chọn. Nhưng vấn đề là mvn surefire-report:report-only không tạo ra các tệp css/*. Css, do đó kết quả xấu xí. Đây là đăng nhập SUREFIRE-616 (không có nghĩa là một cái gì đó sẽ xảy ra mặc dù). Cá nhân, tôi không sử dụng HTML báo cáo rằng nhiều để tôi có thể sống với điều đó nhưng đó không phải là một câu trả lời tốt vì vậy đây là một cách giải quyết dựa trên các nhiệm vụ kiến ​​(* thở dài *):

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>test-reports</id> 
     <phase>test</phase> 
     <configuration> 
      <tasks> 
      <junitreport todir="target/surefire-reports"> 
       <fileset dir="target/surefire-reports"> 
       <include name="**/*.xml"/> 
       </fileset> 
       <report format="noframes" todir="target/surefire-reports"/> 
      </junitreport> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
     <groupId>ant</groupId> 
     <artifactId>ant-junit</artifactId> 
     <version>1.6.2</version> 
     </dependency> 
    </dependencies> 
    </plugin> 

Cập nhật: Ý tưởng ban đầu của tôi là chạy plugin Maven AntRun "theo yêu cầu" để tạo báo cáo ... nhưng đó không phải là những gì tôi đã đăng, tôi đã gắn nó vào giai đoạn test ... Nhưng tôi không nghĩ về trường hợp kiểm tra không thành công (điều đó sẽ ngăn chặn việc xây dựng và ngăn chặn việc thực hiện các plugin AntRun). Vì vậy, một trong hai:

  1. Đừng ràng buộc các plugin AntRun sang giai đoạn test, di chuyển cấu hình bên ngoài execution và gọi mvn antrun:run trên dòng lệnh để tạo ra các báo cáo khi muốn.

  2. hoặc sử dụng các tùy chọn testFailureIgnore của mojo thử nghiệm và thiết lập nó là true trong cấu hình cắm chắc chắn hơn:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
        <testFailureIgnore>true</testFailureIgnore> 
        </configuration> 
    </plugin> 
    
  3. hoặc thiết lập biểu thức này từ dòng lệnh bằng cách sử dụng tham số -D:

    $ mvn test -Dmaven.test.failure.ignore=true 
    

Tôi nghĩ rằng tùy chọn # 1 là lựa chọn tốt nhất, bạn không nhất thiết muốn tạo báo cáo (đặc biệt khi kiểm tra vượt qua) và tạo ra chúng một cách có hệ thống có thể làm chậm quá trình xây dựng về lâu dài. Tôi sẽ tạo ra chúng theo yêu cầu.

+0

Liệu nó mở một subprocess hoặc chỉ chạy ant nhúng? Nếu điều này chỉ nhúng kiến ​​và nhiệm vụ của nó, đây là chính xác những gì tôi cần. –

+0

@jimmy Nó chạy nhiệm vụ kiến ​​trong cùng một quá trình. –

+0

Cảm ơn đây chính xác là những gì tôi cần biết! –

4

Cám ơn Pascal, tôi đã tìm thấy một giải pháp cải tiến để làm những gì tôi muốn làm:

<plugin> 
    <!-- Extended Maven antrun plugin --> 
    <!-- https://maven-antrun-extended-plugin.dev.java.net/ --> 
    <groupId>org.jvnet.maven-antrun-extended-plugin</groupId> 
    <artifactId>maven-antrun-extended-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>test-reports</id> 
     <phase>test</phase> 
     <configuration> 
      <tasks> 
      <junitreport todir="target/surefire-reports"> 
       <fileset dir="target/surefire-reports"> 
       <include name="**/*.xml"/> 
       </fileset> 
       <report format="noframes" todir="target/surefire-reports"/> 
      </junitreport> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
     <groupId>org.apache.ant</groupId> 
     <artifactId>ant-junit</artifactId> 
     <version>1.8.0</version> 
     </dependency> 
     <dependency> 
     <groupId>org.apache.ant</groupId> 
     <artifactId>ant-trax</artifactId> 
     <version>1.8.0</version> 
     </dependency> 
    </dependencies> 
    </plugin> 

Phiên bản này sử dụng một phiên bản mới hơn của kiến ​​và tốt nhất của tất cả. Tuy nhiên, tôi vẫn chưa tìm thấy cách tạo báo cáo thử nghiệm khi kiểm tra không thành công. Tôi nên làm như thế nào?

+0

Bạn có nhận được cách tạo báo cáo sau khi kiểm tra thất bại không? – masT

+0

Xin chào, Theo cấu hình này của ANT trong MAVEN, báo cáo Chắc chắn sẽ tạo các kiểm tra trùng lặp trong báo cáo html. Làm thế nào tôi có thể tránh điều đó? – royki

1

Bạn có thể đặt -Dmaven.test.failure.ignore=true để tạo báo cáo thử nghiệm khi kiểm tra không thành công.

2

Sau đây là cách tôi đã làm nó bằng mục tiêu trang web maven-chắc chắn hơn: báo cáo:

<reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-report-plugin</artifactId> 
       <version>2.16</version> 
       <configuration> 
        <showSuccess>false</showSuccess> 
        <outputDirectory>${basedir}/target/surefire-reports</outputDirectory> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-site-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <outputDirectory>${basedir}/target/surefire-reports</outputDirectory> 
       </configuration> 
      </plugin> 
     </plugins> 
    </reporting> 

</project> 
31

Đây là những gì tôi làm:

# Run tests and generate .xml reports 
mvn test 

# Convert .xml reports into .html report, but without the CSS or images 
mvn surefire-report:report-only 

# Put the CSS and images where they need to be without the rest of the 
# time-consuming stuff 
mvn site -DgenerateReports=false 

đi để nhắm mục tiêu/trang web/surefire-report.html cho báo cáo.

Sau khi chạy thử, phần còn lại của hai lần chạy trong khoảng 3,5 giây cho tôi.

Hy vọng điều đó sẽ hữu ích. Thưởng thức!

+1

Điều này phải được chấp nhận là cách dễ nhất để đạt được kết quả và câu trả lời. – vikramvi

1

Tạo một cấu hình maven chạy mới và với mục tiêu =>

surefire-report:report site -DgenerateReports=false 

này có thể giúp bạn có một cái nhìn tốt hơn báo cáo với css.

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