Trong IntelliJ, làm cách nào để gỡ lỗi mục tiêu kiểm tra maven?


82

Sử dụng tệp intellij và maven pom, làm cách nào để gỡ lỗi kiểm tra chạy bên trong mục tiêu kiểm tra maven?

Khi tôi chạy chúng trực tiếp trong mã, nó phàn nàn điều gì đó về việc thiếu các cấu hình, mà tôi đã đánh dấu bên trong Dự án Maven của intellij.

Câu trả lời:


25

Còn khi nhấp chuột phải vào mục tiêu của bạn và "Gỡ lỗi [mục tiêu của bạn]" (trong trường hợp của bạn là mục tiêu thử nghiệm)?

mục tiêu gỡ lỗi


Ahh không nghĩ về điều đó. Quá muộn vào một buổi chiều thứ sáu: D Cảm ơn.
JavaRocky

23
Giả sử bạn muốn sử dụng các điểm ngắt, câu trả lời này là không đủ. Thay vào đó, hãy xem câu trả lời của Hover.
David Groomes

182

http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

Trong IDEA, hãy chạy thử nghiệm của bạn ở chế độ gỡ lỗi " mvn -DforkMode=never test"

Đã cập nhật : Mở cấu hình chạy / gỡ lỗi của bạn, trong tab "Người chạy", thêm-DforkMode=never

nhập mô tả hình ảnh ở đây

(Ghi chú bởi @ mikeapr4: sử dụng phiên bản mới hơn của plugin surefire (2.14+) mvn -DforkCount=0 test)


Điều đó đã làm việc cho tôi. Tôi đang sử dụng lệnh sau để gỡ lỗi các mục tiêu thử nghiệm trong Idea 10
Swapnonil Mukherjee

1
Trong dự án đa mô-đun của tôi, đây là lựa chọn duy nhất phù hợp với tôi từ bên trong Intellij.
nash

24
Với IDEA 11, tôi thấy trong các dự án Maven, tôi phải nhấp chuột phải vào kiểm tra cho mô-đun tôi muốn kiểm tra. Điều này đã tạo ra một cấu hình chạy / gỡ lỗi. Sau đó, chỉnh sửa cấu hình mới này, nhấp vào tab Á hậu và thêm -DforkMode = never vào VM Options. Nhấp vào ok. Đặt điểm ngắt, sau đó nhấp vào biểu tượng gỡ lỗi để chạy cấu hình gỡ lỗi mới. Một sự kết hợp của những điều trên, vì vậy cảm ơn vì các mẹo.
foolshat

@MarkM Breakpoints không được tôn trọng trong IJ13 đối với tôi khi sử dụng phương pháp này.
StephenBoesch

9
Cần lưu ý các phiên bản mới hơn của việc sử dụng plugin surefire (2.14+) mvn -DforkCount=0 test, điều này được đề cập bên dưới trong các câu trả lời (khó hiểu) khác, nhưng chúng có thể bị bỏ qua.
mikeapr4

28

Tôi thực hiện các bài kiểm tra với các tùy chọn sau:

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test

... và sau đó kết nối với Maven bằng trình gỡ lỗi từ xa.


Bạn đã quản lý để log4j / ghi nhật ký hoạt động? Tôi thậm chí đã bao gồm -Dlog4j.configuration = <đường dẫn đến log4j.properties> nhưng các câu lệnh ghi nhật ký không được in.
StephenBoesch

18

-DforkMode=never không hoạt động nữa, nó hiện không được dùng nữa trong SureFire.

Sử dụng -DforkCount=0thay thế khi sử dụng plugin surefire 2.14+.


1
Tài liệu Surefire nói để sử dụng forkCountreuseForksthay thế, vì vậy tôi nghĩ rằng phần trên có nghĩa là "Sử dụng -DforkCount=0thay thế." Tôi đã thử -DforkCount=0( reuseForkssẽ không thành vấn đề nếu không có ngã ba), nhưng điểm ngắt của tôi không bao giờ bị vấp. Nó thực hiện chuyến đi với -DforkMode=never(Maven 3.2.1, IDEA 13.1.2).
mmindenhall

9

Câu hỏi đã được trả lời. Nhưng chỉ để chia sẻ kinh nghiệm của riêng tôi. Câu trả lời đã chọn không giải quyết được vấn đề của tôi. Mã của tôi có nhiều mô-đun.

câu trả lời của foolshat đã mang lại cái nhìn sâu sắc có giá trị cho vấn đề của tôi.

Tôi có hai giải pháp, 1. Sử dụng IDEA của bạn, bằng cách thêm tùy chọn VM -DforkMode=never ; Phải chạy nó với chế độ gỡ lỗi. 2. Thiết lập gỡ lỗi từ xa , chỉ định ổ cắm và trong trường hợp này forkMode là không cần thiết.

Nó chỉ là một bản tóm tắt cho những gì tôi đã trải qua.


1

Giải pháp từ Colin Hebert cũng không hiệu quả với tôi. Nhưng tình cờ tôi tìm thấy một cách dễ dàng để gỡ lỗi bài kiểm tra bằng cách nhấp chuột phải vào hình tam giác màu xanh lá cây xuất hiện bên cạnh phương pháp kiểm tra:

Ví dụ về lớp kiểm tra Java

Tôi hy vọng điều đó sẽ giúp bạn!


1
Vui lòng đăng mã của lớp đó và không sử dụng hình ảnh.
thông thường

1
Những gì tôi đóng góp với nhận xét này là một cách để gỡ lỗi bằng cách mở cửa sổ trên IntelliJ. Mã của lớp là không quan trọng.
David DRM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.