Bộ thử nghiệm JUnit 4


98

Làm cách nào để tạo bộ thử nghiệm với JUnit 4?

Tất cả các tài liệu tôi đã thấy dường như không hiệu quả với tôi. Và nếu tôi sử dụng trình hướng dẫn Eclipse, nó không cung cấp cho tôi tùy chọn để chọn bất kỳ lớp kiểm tra nào mà tôi đã tạo.


4
Với Eclipse 3.7 Indigo, trình hướng dẫn bộ thử nghiệm hiện hỗ trợ JUnit 4
FabianLESg Ngày

Câu trả lời:


147
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}

61

Bạn có thể tạo một bộ như vậy. Ví dụ, một AllTestdãy phòng sẽ trông giống như thế này.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Bây giờ bạn có thể chạy điều này theo một số cách khác nhau:

  1. nhấp chuột phải và chạy trong Eclipse dưới dạng thử nghiệm Junit
  2. tạo một Ứng dụng Java có thể chạy được; Main class = 'org.junit.runner.JUnitCore' và Args = 'my.package.tests.AllTests'
  3. chạy từ dòng lệnh:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests

Sẽ thêm nhiều hơn VoteUps cho cmdline :)
Gruber

9

Tôi nghĩ rằng TestSuite đã không còn được ưa chuộng. Đó có thể là phong cách trước 4.x, nhưng bây giờ không phải như tôi biết.

Tôi chỉ chú thích các bài kiểm tra tôi muốn và sau đó chạy lớp học. Tất cả các bài kiểm tra có chú thích đều được chạy. Tôi có thể sử dụng Ant, nhưng hầu hết thời gian tôi có IntelliJ chạy chúng cho tôi.


11
Tôi có thể sai, nhưng tôi nghĩ TestSuite vẫn tốt khi chúng ta cần chỉ định thứ tự các thử nghiệm, đặc biệt là trong các thử nghiệm tích hợp tự động, nơi thử nghiệm các kịch bản nhỏ hơn sẽ xảy ra trước các tình huống phức tạp hơn.
bertie

@duffymo tôi thấy thú vị nhận xét của bạn như tôi đã cho đến nay được huấn luyện trong dòng trước 4.x tư tưởng liên quan đến việc tổ chức testcases vào testsuites
Vatsala

6
Nếu bạn có số lượng bài kiểm tra lớn hơn, các khu vực / mô-đun chức năng khác nhau, sự phân biệt giữa các bài kiểm tra 'lõi' và phụ trợ / chậm hơn / đắt tiền - vì bất kỳ lý do nào trong số này - bạn sẽ cấu trúc các bài kiểm tra thành một TestSuite.
Thomas W

1
Bạn có thể sử dụng @SuiteClasschú thích trong nhiều lớp và bạn có thể lồng các Suite bên trong các Suite. Dòng suy nghĩ để tổ chức chúng trong 3.x vẫn hoàn toàn hợp lệ (và nên được sử dụng). Bạn có thể cấu trúc mọi thứ theo cách chính xác như bạn đã làm trước đây; bạn chỉ cần sử dụng cú pháp chú thích thay vì TestSuite.suite(). Thực sự không có lợi khi sử dụng TestSuitechú thích và bạn có thể tận dụng tất cả các cải tiến của JUnit 4 nếu sử dụng chú thích tương đương về mặt tổ chức.
Thunderforge

3

Dưới đây là các bước để tạo một bộ JUnit trong eclipse:

  1. Trong chế độ xem 'Trình khám phá gói' của phối cảnh 'Java' nhật thực, hãy chọn (các) thử nghiệm đơn vị của bạn trong gói của chúng, bên trong dự án java nhật thực.
  2. Nhấp chuột phải vào bất kỳ một trong các bài kiểm tra đã chọn.
  3. Trong menu bật lên, chọn Mới, Khác…
  4. Mở thư mục 'Java', sau đó mở thư mục 'JUnit'
  5. Chọn 'JUnit Test Suite' và sau đó chọn nút 'Tiếp theo'
  6. Chọn nút 'Hoàn tất'
  7. Kết quả: Tệp bộ 'AllTests.java' được tạo, với các bài kiểm tra tự động được đưa vào
  8. Chọn nút Chạy trong nhật thực
  9. Kết quả: tất cả các bài kiểm tra trong bộ chạy
  10. Bây giờ bạn có thể trỏ đến tệp bộ này bằng ANT, Jenkins hoặc công cụ tích hợp liên tục cấu hình xây dựng khác.

Thông tin phiên bản: đây là dành cho eclipse Neon và JUnit 4. Bạn cũng có thể chọn JUnit 3 trước khi chọn 'Hoàn tất' ở bước 6.


Bạn có thể đăng tệp build.xml hướng dẫn cách chạy bộ thử nghiệm này từ ANT không?
LiborStefek

1

Trên đỉnh đầu của tôi, hãy tạo một TestSuite và gọi các addTests. Nếu bạn muốn somesource xem xét, hãy thử bất kỳ mã nguồn mở nào như hibernate hoặc thứ gì đó từ apache và xem trong thư mục thử nghiệm của nguồn để biết bộ Tests ...

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.