Để trả lời vấn đề của bạn trước tiên, nếu bạn có sự khác biệt giữa Ant junit và Eclipse JUnit, đó có thể là sự cố classpath hoặc môi trường. Cách dễ nhất là tìm một bài kiểm tra thực hiện khác nhau giữa hai và in ra các thuộc tính hệ thống, và làm việc ở đó từ hướng đó. Một điều cần thử là chạy các kịch bản kiến từ bên trong Eclipse, để xem điều này có tạo ra sự khác biệt hay không (vì môi trường sẽ thay đổi)
Eclipse không sử dụng Ant để chạy thử nghiệm.
Về cách Eclipse chạy thử nghiệm JUnit, dưới đây là tổng quan nhanh. Được cảnh báo: có một số phép thuật sâu trong plugin JUnit Eclipse.
Eclipse có 4 plugin JUnit, tất cả được cài đặt theo mặc định trong hầu hết các cấu hình:
- org.eclipse.jdt.junit: git: //dev.eclipse.org/org.eclipse.jdt/ org.eclipse.jdt.junit.git
- org.eclipse.jdt.junit.core: git: //dev.eclipse.org/org.eclipse.jdt/org.eclipse.jdt.junit.core.git
- org.eclipse.jdt.junit.runtime: git: //dev.eclipse.org/org.eclipse.jdt/org.eclipse.jdt.junit.runtime.git
- org.eclipse.jdt.junit4. thời gian chạy: git: //dev.eclipse.org/org.eclipse. jdt/org.eclipse.jdt.junit4.runtime.git
Đây là các gương git của kho lưu trữ CVS thực tế. Thời gian qua tôi đã cố gắng sử dụng chúng, chúng không biên dịch, nhưng chúng sẽ cung cấp cho bạn mã và ít nhất bạn có thể nhập các dự án vào Eclipse và xem chúng.
Nếu chúng ta bỏ qua các trang cấu hình, cách plugin tạo cấu hình chạy, mã cho chế độ xem JUnit và cách nó tìm các kiểm tra phù hợp để chạy, chúng ta có thể tập trung vào cách chạy thử nghiệm.
Các lớp cốt lõi là org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate
và org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
. JUnitLaunchConfigurationDelegate
đọc cấu hình khởi chạy và tìm kiếm một JVM trong đó các thử nghiệm sẽ được chạy. Lớp chính cho JVM mới này là RemoteTestRunner
. Các thử nghiệm được chạy được chuyển thành các tham số cho JVM được chia rẽ, hoặc là một thử nghiệm đơn lẻ hoặc dưới dạng danh sách các thử nghiệm trong một tệp tạm thời nếu bạn đang thực hiện Chạy như JUnit trên một dự án. Nếu bạn đang gỡ lỗi, JVM mới này có thể được giữ sống bằng cách chọn hộp kiểm Keep alive when debugging
trong cấu hình chạy. Trong trường hợp này, JVM sẽ kết nối và chạy lại các kiểm tra hiện có sẽ được gửi qua các ổ cắm.
RemoteTestRunner
chạy thử nghiệm và trả lại kết quả qua ổ cắm vào Eclipse, sau đó cập nhật chế độ xem JUnit. Trái tim của điều này là org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference
, chạy thử nghiệm (đối với JUnit 4) và org.eclipse.jdt.internal.junit4.runner.JUnit4TestListener
, là RunListener
cho các thử nghiệm này. JUnit4TestListener mở rộng RunListener
, nhưng không ghi đè lên testAssumptionFailure
, đó có thể là lý do tại sao các thử nghiệm của bạn được chuyển vào Eclipse. RunListener.testAssumptionFailure
là phương thức trống, không có gì, vì vậy thông báo của bạn sẽ bị bỏ qua.
Tôi sẽ bắt đầu bằng cách sao chép các repo git, nhập các dự án vào Eclipse và cố gắng làm việc thông qua mã.
Eclipse không sử dụng tệp xây dựng kiến của bạn để chạy thử nghiệm JUnit. Chắc chắn rồi. –
Tôi nhận thức được điều này, tôi đang cố gắng tìm ra sự khác biệt giữa việc chạy cùng một bộ kiểm thử từ Ant là chạy chúng thông qua plugin Eclipse. –
Bạn có thể nhận được một số gợi ý từ trình chạy thử nghiệm Junit Eclipse của bạn, đặc biệt là tab đối số và tab cấu hình. –