2012-07-27 46 views
6

Tôi đang cố gắng chạy thử nghiệm JUnit với JMeter 2.7. Tuy nhiên, khi chọn các lớp thử nghiệm trong trình đơn thả xuống của trình lấy mẫu JUnit, chúng không hiển thị. Như tôi đã phát hiện ra, đó là bởi vì các lớp thử nghiệm đang mở rộng từ một lớp khác (AbstractJUnit4SpringContextTests là lớp cơ sở, với các lớp trừu tượng khác nhau trong việc cung cấp các phương thức tiện lợi) cho tất cả các bài kiểm tra. Một lớp thử nghiệm không được mở rộng từ các lớp cơ sở đó có thể được chọn.Các lớp kiểm tra JUnit không hiển thị trong JMeter

Tệp JAR chứa các lớp thử nghiệm được tạo bởi Maven (test-jar), JAR chứa tất cả các phụ thuộc được tạo bởi plugin fataven maven. Cả hai lọ được đặt trong thư mục JMeter/lib/junit.

Tôi biết rằng hướng dẫn JMeter nói rằng tất cả các lớp thử nghiệm phải mở rộng từ lớp kiểm tra JUnit, nhưng điều đó dường như chỉ đúng với JUnit3. Với JUnit4, JMeter không cần yêu cầu đó. Tất nhiên, tôi có thể viết lại tất cả các bài kiểm tra để họ không phải kéo dài từ lớp cơ sở, nhưng điều đó sẽ dẫn đến một vấn đề bảo trì rất lớn. Vì vậy, làm thế nào để thực hiện các bài kiểm tra JUnit với JMeter mở rộng từ một lớp cơ sở?

UDPATE 2012-08-09

Nhờ gợi ý của PMD, bây giờ tôi sao chép các phụ thuộc từng người một vào thư mục lib của JMeter, và bây giờ là GUI cho thấy tất cả các bài kiểm tra đơn vị của tôi. Trước khi có thể, tôi phải giải quyết một vài vấn đề một mình:

  • Sao chép logkit-1.0.1.jar vào thư mục ngăn giao diện JMeter khởi động. Không có ý tưởng tại sao, không có lỗi hoặc thông điệp tường trình đã được đưa ra. JVM vừa mới bắt đầu và chấm dứt.
  • Đã có một số xung đột phiên bản do phụ thuộc maven giới thiệu phiên bản cũ hơn của gói thử nghiệm mùa xuân. Điều đó dẫn đến một số lớp thử nghiệm mở rộng từ một lớp cơ sở cũ có cùng tên. Loại trừ những phụ thuộc trong tệp pom đã giúp.

Tôi hiện có thể thực hiện các trường hợp kiểm tra JUnit của mình. Tuy nhiên, một số tài liệu tham khảo trong các lớp học của tôi được chú thích với @Resource. Testrunner của JMeter dường như không tiêm các tham chiếu đó, bởi vì mỗi khi một tham chiếu được truy cập, một NullPointerException được ném ra, như có thể thấy trong nhật ký JMeter. Vì vậy, làm thế nào tôi có được JMeter để tiêm những phụ thuộc, là thậm chí có thể?

+0

@resource thường được giải thích bởi mùa xuân trong thời gian bắt đầu ngữ cảnh. Trong trường hợp này, tôi nên điều tra mã của bạn sâu hơn, có lẽ bạn nên xem xét trường hợp thử nghiệm khởi tạo mùa xuân hoặc bạn có thể cố gắng ghi đè phương pháp thiết lập để tiêm tài nguyên theo cách thủ công. Bằng cách này nếu phản ứng của tôi là chính xác, bạn nên đánh dấu nó như vậy và có thể mở một câu hỏi khác thay vì thay đổi ban đầu, đó là cách SO hoạt động. –

+0

@Teinacher bạn đã tìm thấy giải pháp cho việc này chưa? Tôi có cùng và không biết làm thế nào để giải quyết nó – javagirl

Trả lời

4

Bạn phải đặt các lớp junit của mình trong thư mục lib/junit như bạn đã làm và các phụ thuộc trong thư mục lib.

Bạn không nên sử dụng fatjar như đôi khi những công cụ này đã xóa các tệp khỏi meta-inf hoặc chỉ giữ một tệp khỏi tất cả các lọ, một phần trong mỗi lọ của nó.

Thêm tất cả các lọ của bạn từng cái một trong thư mục lib.

Kiểm tra nhật ký jmeter để xem bạn có ngoại lệ hay không.

Nếu vẫn không thành công, hãy đặt câu hỏi trên danh sách người dùng jmeter và nếu bạn không nhận được bất kỳ câu trả lời nào, hãy tạo một trường hợp thử nghiệm đơn giản và mở một lỗi.

1

Bạn có kiểm tra tùy chọn mà trình lấy mẫu JUnit phải tìm kiếm các thử nghiệm v4 không?

JMeter option to search for JUnit 4 annotations

tôi đã cố gắng và làm việc này cho một dự án đơn giản, tôi đã tạo với JUnit 4, nó lọc chỉ thử nghiệm với các chú thích @Test ngay cả những lớp học không mở rộng lớp TestCase.

-1

Như Teinacher đã viết, kiểm tra JUnit sẽ hiển thị trong JMeter sau sao chép tất cả các phụ thuộc dự án (tất cả các tệp .jar) vào thư mục JMeter/lib (cần khởi động lại JMeter).

+0

Khi một câu trả lời được chấp nhận và chính xác không cần phải thêm một bản sao mà chỉ gây nhầm lẫn cho người đọc mới. –

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