JUnit là khung kiểm thử đơn vị phổ biến nhất trong Java. Nó được khuyến nghị rõ ràng cho Kiểm thử đơn vị. JUnit không yêu cầu máy chủ để kiểm tra ứng dụng web, điều này giúp quá trình kiểm tra diễn ra nhanh chóng.
Khung công tác JUnit cũng cho phép tạo các trường hợp thử nghiệm và dữ liệu thử nghiệm nhanh chóng và dễ dàng. Các org.Junit gói bao gồm nhiều giao diện và các lớp học Khảo thí JUnit như Test, Khẳng định, Sau, Trước vv
Kiểm tra cố định là gì
Trước khi chúng tôi hiểu lịch thi đấu là gì, chúng ta hãy nghiên cứu đoạn mã dưới đây
Mã này được thiết kế để thực thi hai trường hợp thử nghiệm trên một tệp đơn giản.
public class OutputFileTest {đầu ra tệp riêng tư;output = new File (…);output.delete ();public void testFile1 () {// Mã xác minh Trường hợp kiểm tra 1}output.delete ();output = new File (…);public void testFile2 () {// Mã xác minh Trường hợp kiểm tra 2}output.delete ();}
Một số vấn đề ở đây
- Mã không thể đọc được
- Mã này không dễ bảo trì.
- Khi bộ thử nghiệm phức tạp, mã có thể chứa các vấn đề logic.
So sánh cùng một mã bằng JUnit
public class OutputFileTest{đầu ra tệp riêng tư;@Before public void createOutputFile (){output = new File (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// mã cho mục tiêu trường hợp thử nghiệm}@Test public void testFile2 (){// mã cho mục tiêu trường hợp thử nghiệm}}
Mã dễ đọc và dễ bảo trì hơn nhiều. Cấu trúc mã trên là một vật cố Kiểm tra.
Bộ cố định kiểm tra là một ngữ cảnh mà một Trường hợp kiểm tra chạy. Thông thường, các thiết bị kiểm tra bao gồm:
- Các đối tượng hoặc tài nguyên có sẵn cho bất kỳ trường hợp thử nghiệm nào.
- Các hoạt động cần thiết để cung cấp các đối tượng / tài nguyên này.
- Những hoạt động này là
- phân bổ ( thiết lập )
- khử phân bổ ( xé nhỏ ).
Thiết lập và Teardown
- Thông thường, có một số nhiệm vụ lặp lại phải được thực hiện trước mỗi trường hợp thử nghiệm. Ví dụ: tạo kết nối cơ sở dữ liệu.
- Tương tự như vậy, vào cuối mỗi trường hợp thử nghiệm, có thể có một số nhiệm vụ được lặp lại. Ví dụ: để dọn dẹp sau khi quá trình thực thi thử nghiệm kết thúc.
- JUnit cung cấp các chú thích giúp thiết lập và chia nhỏ. Nó đảm bảo rằng các tài nguyên được giải phóng và hệ thống thử nghiệm ở trạng thái sẵn sàng cho trường hợp thử nghiệm tiếp theo.
Những chú thích này được thảo luận bên dưới-
Thiết lập
@Before annotation được sử dụng trên một phương thức chứa mã Java để chạy trước mỗi trường hợp thử nghiệm. tức là nó chạy trước mỗi lần thực thi thử nghiệm.
Teardown (bất kể phán quyết)
@After annotation được sử dụng trên một phương thức chứa mã java để chạy sau mỗi trường hợp thử nghiệm. Các phương pháp này sẽ chạy ngay cả khi có bất kỳ ngoại lệ nào được đưa ra trong trường hợp thử nghiệm hoặc trong trường hợp xác nhận thất bại.
Ghi chú:
- Nó được phép có bất kỳ số lượng chú thích nào được liệt kê ở trên.
- Tất cả các phương thức được chú thích bằng @Before sẽ chạy trước mỗi trường hợp thử nghiệm, nhưng chúng có thể chạy theo bất kỳ thứ tự nào.
- Bạn có thể kế thừa các phương thức @Before và @After từ một siêu lớp, Việc thực thi như sau: Đây là một quy trình thực thi tiêu chuẩn trong JUnit.
- Thực thi các phương thức @Before trong lớp cha
- Thực thi các phương thức @Before trong lớp này
- Thực thi phương thức @Test trong lớp này
- Thực thi các phương thức @After trong lớp này
- Thực thi các phương thức @After trong lớp cha
Ví dụ: Tạo một lớp với tệp làm vật cố định kiểm tra
public class OutputFileTest{đầu ra tệp riêng tư;@Before public void createOutputFile (){output = new File (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// mã cho mục tiêu trường hợp thử nghiệm}@Test public void testFile2 (){// mã cho mục tiêu trường hợp thử nghiệm}}
Trong ví dụ trên, chuỗi thực thi sẽ như sau:
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Giả định: testFile1 () chạy trước testFile2 () - điều này không được đảm bảo.
Thiết lập chỉ một lần
- Có thể chạy một phương thức chỉ một lần cho toàn bộ lớp thử nghiệm trước khi bất kỳ thử nghiệm nào được thực thi và trước bất kỳ (các) phương thức @Before nào .
- "Thiết lập chỉ một lần" hữu ích cho việc khởi động máy chủ, mở thông tin liên lạc, v.v. Việc đóng và mở lại tài nguyên cho mỗi lần kiểm tra sẽ tốn nhiều thời gian.
- Điều này có thể được thực hiện bằng cách sử dụng chú thích @BeforeClass
@BeforeClass public static void Method_Name () {// mã thiết lập lớp tại đây}
Xé xuống một lần duy nhất
- Tương tự như thiết lập một lần duy nhất, phương pháp dọn dẹp một lần cũng có sẵn. Nó chạy sau khi tất cả các phương thức test case và @After các chú thích đã được thực thi.
- Nó rất hữu ích cho việc dừng máy chủ, đóng các liên kết truyền thông, v.v.
- Điều này có thể được thực hiện bằng cách sử dụng chú thích @AfterClass
@AfterClass public static void Method_Name (){// mã dọn dẹp lớp tại đây}
Bộ thử nghiệm JUnit
Nếu chúng ta muốn thực hiện nhiều bài kiểm tra theo một thứ tự được chỉ định, nó có thể được thực hiện bằng cách kết hợp tất cả các bài kiểm tra ở một nơi. Nơi này được gọi là dãy phòng thử nghiệm. Chi tiết hơn về cách thực thi các bộ thử nghiệm và cách nó được sử dụng trong JUnit sẽ được đề cập trong hướng dẫn này.
Người chạy thử Junit
JUnit cung cấp một công cụ để thực thi các trường hợp thử nghiệm của bạn.
- Lớp JUnitCore được sử dụng để thực thi các bài kiểm tra này.
- Một phương thức được gọi là runClasses được cung cấp bởi org.junit.runner.JUnitCore, được sử dụng để chạy một hoặc một số lớp thử nghiệm.
- Loại trả về của phương thức này là đối tượng Kết quả ( org.junit.runner.Result ), được sử dụng để truy cập thông tin về các bài kiểm tra. Xem ví dụ mã sau để rõ ràng hơn.
Kiểm tra lớp công khai {public static void main (String [] args) {Kết quả kết quả = JUnitCore.runClasses (CreateAndSetName.class);for (Lỗi không thành công: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println (result.wasSuccessful ());}}
Trong đoạn mã trên, đối tượng "result" được xử lý để lấy các lỗi và kết quả thành công của các trường hợp kiểm thử mà chúng tôi đang thực hiện.
Chương trình JUnit đầu tiên
Kiến thức tốt về SDLC, lập trình java và kiến thức cơ bản về quy trình kiểm thử phần mềm giúp hiểu chương trình JUnit.
Hãy hiểu Unit Testing bằng cách sử dụng một ví dụ trực tiếp. Chúng tôi cần tạo một lớp thử nghiệm với một phương pháp thử nghiệm được chú thích bằng @Test như được cung cấp bên dưới:
MyFirstClassTest.java
gói guru99.JUnit;nhập static org.JUnit.Assert. *;nhập khẩu org.JUnit.Test;lớp công khai MyFirstClassTest {@Kiểm trapublic void myFirstMethod () {String str = "JUnit đang hoạt động tốt";khẳng địnhEquals ("JUnit đang hoạt động tốt", str);}}
TestRunner.java
Để thực hiện phương pháp thử nghiệm của chúng tôi (ở trên), chúng tôi cần tạo một trình chạy thử nghiệm. Trong trình chạy thử nghiệm, chúng ta phải thêm lớp thử nghiệm làm tham số trong phương thức runclasses () của JUnitCore. Nó sẽ trả về kết quả kiểm tra, dựa trên việc kiểm tra đạt hay không đạt.
Để biết thêm chi tiết về điều này, hãy xem mã bên dưới:
gói guru99.JUnit;nhập org.JUnit.runner.JUnitCore;nhập org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;lớp công khai TestRunner {public static void main (String [] args) {Kết quả kết quả = JUnitCore.runClasses (MyFirstClassTest.class);for (Lỗi không thành công: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Kết quả ==" + result.wasSuccessful ());}}
Đầu ra
Sau khi TestRunner.java thực thi các phương pháp thử nghiệm của chúng tôi, chúng tôi nhận được kết quả đầu ra là không thành công hoặc vượt qua. Vui lòng tìm giải thích đầu ra bên dưới:
- Trong ví dụ này, sau khi thực thi MyFirstClassTest.java , kiểm tra được vượt qua và kết quả có màu xanh lục.
- Nếu nó không thành công, nó phải hiển thị kết quả là màu Đỏ và sự thất bại có thể được quan sát trong dấu vết thất bại. Xem bên dưới JUnit gui:
Tóm tắt :
- JUnit là một khung công tác hỗ trợ một số chú thích để xác định một phương pháp có chứa một bài kiểm tra.
- JUnit cung cấp một chú thích được gọi là @Test, chú thích này cho JUnit biết rằng phương thức public void mà nó được sử dụng có thể chạy như một trường hợp thử nghiệm.
- Vật cố thử nghiệm là một ngữ cảnh nơi một trường hợp thử nghiệm chạy
- Để thực hiện nhiều bài kiểm tra theo một thứ tự được chỉ định, nó có thể được thực hiện bằng cách kết hợp tất cả các bài kiểm tra ở một nơi. Nơi này được gọi là dãy phòng thử nghiệm.
- JUnit cung cấp một công cụ để thực hiện các bài kiểm tra, nơi chúng tôi có thể chạy các trường hợp kiểm thử của mình được gọi là Test Runner.