2011-07-28 64 views
8

Tôi muốn đo phạm vi mã của các thử nghiệm tích hợp bằng cách sử dụng các công cụ JaCoCo và Sonar.Lấy mã vùng phủ sóng của ứng dụng của tôi bằng cách sử dụng tác nhân Java JaCoCo trên Tomcat

Để làm điều đó, tôi bắt đầu cấu hình Tomcat 5.5 của mình với tác nhân JaCoCo để lấy tệp kết xuất từ ​​JaCoCo.

Vì vậy, tôi đặt JAVA_OPTS cho rằng:

set JAVA_OPTS=-Xrs -XX:MaxPermSize=256m -XX:PermSize=256m -XX:NewRatio=3 -Xms512m -Xmx1024m -XX:+UseParallelGC -javaagent:C:\dev\servers\jacoco-agent.jar=destfile=C:\dev\servers\jacoco.exec,append=true,includes=my.application.* 

Khi tôi bắt đầu Tomcat, tập tin C:\dev\servers\jacoco.exec được tạo ra, nhưng không có dữ liệu được lấp đầy.

Có điều gì tôi quên trong cấu hình máy chủ của mình không?

Trân trọng.

+0

Có, [nếu jacoco được định cấu hình để đăng nhập vào một tệp hoàn toàn, nó được viết khi tắt máy] (http://car-online.fr/en/blog/fabien_duchene /2013-05-03-Java%20Code%20Coverage%20in%20Tomcat%20JSP%20applications,%20e.g.,%20WebGoat%20with%20Jacoco/) –

Trả lời

4

Theo như tôi nhớ - tệp sẽ được điền khi tắt Tomcat.

+0

Ok, tôi sẽ cố gắng trong tuần này và trả lại cho bạn. – romaintaz

+0

Nếu bạn không muốn tắt máy chủ của mình, giống như chúng tôi, Cobertura có một ứng dụng web coberturaFlush có thể được gọi bằng cách sử dụng http: // host: port/coberturaFlush/flushCobertura. Hãy chắc chắn có bình cobertura của bạn được nạp bởi cùng một trình nạp lớp. – Dormouse

8

Tôi nhận thấy đây có thể không phải là tùy chọn 2 năm trước khi câu hỏi này được hỏi, nhưng hiện tại bạn có một số tùy chọn khác để tìm nạp dữ liệu thực thi JaCoCo mà không tắt Tomcat (hoặc bất kỳ JVM nào được cài đặt với tác nhân java JaCoCo).

Đầu tiên hãy nhìn vào tài liệu hiện tại cho JaCoCo Java Agent: http://www.eclemma.org/jacoco/trunk/doc/agent.html

Bạn có thể sử dụng output = tcpserver tùy chọn trên đại lý JaCoCo có đại lý Java lắng nghe lệnh. Bạn có thể đặt address = * để tcpserver lắng nghe trên tất cả các giao diện và bạn có thể đặt đối số port = 6300 để chọn cổng nơi tcpserver sẽ lắng nghe.

Thông qua tcpserver, tác nhân java JaCoCo có thể được hướng dẫn gửi cho bạn dữ liệu bất cứ khi nào bạn yêu cầu.

Nếu JVM của bạn hiện đang hiển thị JMX, bạn có một tùy chọn khác mà bạn có thể sử dụng mà không cần mở các cổng bổ sung. Bằng cách đặt tùy chọn jmx = true, tác nhân java JaCoCo sẽ hiển thị MBean mà bạn có thể tương tác.

Nếu bạn đang sử dụng maven, bạn có thể xem plugin tôi vừa viết để thu thập dữ liệu JaCoCo từ JVM của từ xa trong khi đang chạy. Dự án cho plugin được đặt tại:
https://github.com/mattcj/jacocotogo

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