JUnit Các trường hợp thử nghiệm @Before @BeforeClass Chú thích

JUnit là đơn vị phổ biến nhất Kiểm tra khuôn khổ trong Java. Nó được khuyến khích rõ ràng cho Kiểm tra đơn vị. JUnit không yêu cầu máy chủ để thử nghiệm ứng dụng web, giúp quá trình thử nghiệm diễn ra nhanh chóng.

JUnit framework 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 tổ chức Junit gói bao gồm nhiều giao diện và lớp cho JUnit Kiểm tra như Kiểm tra, Khẳng định, Sau, Trước, v.v.

Vật cố thử nghiệm là gì

Trước khi chúng ta hiểu thiết bị kiểm thử là gì, hãy nghiên cứu đoạn mã bên dưới

Mã này được thiết kế để thực hiện hai trường hợp thử nghiệm trên một tệp đơn giản.

public class OutputFileTest {
    private File output; 
    output = new File(...);
    output.delete(); 
public void testFile1(){
        //Code to verify Test Case 1
}
    output.delete();
    output = new File(...);
public void testFile2(){
        //Code to verify Test Case 2
}
 output.delete(); 
}

Có vài vấn đề ở đây

  • Mã không thể đọc được
  • Mã này không dễ bảo trì.
  • Khi bộ kiểm thử phức tạp, mã có thể chứa các vấn đề về logic.

So sánh cùng một mã bằng cách sử dụng JUnit

public class OutputFileTest		
{
    private File output; 
    @Before public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

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ố thử nghiệm.

Một thiết bị kiểm thử là một bối cảnh trong đó một JUnit Trường hợp thử nghiệm chạy. Thông thường, đồ đạc thử nghiệm 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à
    1. phân bổ (thiết lập)
    2. hủy phân bổ (phá bỏ).

Thiết lập và phá bỏ

  • Thông thường, có một số nhiệm vụ lặp đi lặp lại phải được thực hiện trước mỗi trường hợp kiểm thử. 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 hiện kiểm tra 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.

Kia là JUnit chú thích được thảo luận dưới đây-

Thành lập

@Trước chú thích trong JUnit được sử dụng trên một phương thức có chứa Java mã để 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 hiện kiểm tra.

Teardown (bất kể phán quyết)

@Sau đó chú thích đượ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 thức 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 không thành công.

Lưu ý:

  • 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 pháp được chú thích bằng @Trước in JUnit sẽ chạy trước mỗi test case, 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.
  1. Thực hiện JUnit @Before các phương thức trong siêu lớp
  2. Thực thi các phương thức @Before trong lớp này
  3. Thực thi phương thức @Test trong lớp này
  4. Thực thi các phương thức @After trong lớp này
  5. Thực thi các phương thức @After trong siêu lớp

Ví dụ: Tạo một lớp với tệp làm vật cố thử nghiệm

public class OutputFileTest		
{
    private File output; 
    @Before	public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

Trong ví dụ trên, chuỗi thực hiện sẽ như sau-

Thiết lập và phá bỏ

  1. createOutputFile()
  2. testFile1()
  3. xóaOutputFile()
  4. createOutputFile()
  5. testFile2()
  6. xóaOutputFile()

Giả thiết:

testFile1() chạy trước testFile2()– điều này không được đảm bảo.

Thiết lập một lần duy nhất

  • Có thể chạy một phương thức chỉ một lần cho toàn bộ lớp kiểm thử trước khi bất kỳ kiểm thử nào được thực hiện và trước bất kỳ kiểm thử nào. @Trước (các) phương pháp.
  • “Thiết lập chỉ một lần” rất hữu ích cho việc khởi động máy chủ, mở 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 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 in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

Phá bỏ một lần duy nhất

  • Tương tự như thiết lập chỉ một lần, phương pháp dọn dẹp chỉ một lần cũng có sẵn. Nó chạy sau tất cả các phương pháp test case và @Sau đó chú thích đã được thực hiện.
  • Nó rất hữu ích để 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 @Sau giờ học chú thích
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit Bộ thử nghiệm

Nếu chúng ta muốn thực hiện nhiều bài kiểm tra theo thứ tự cụ thể, có thể 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à bộ kiểm tra. Chi tiết hơn về cách thực hiện bộ kiểm tra và cách sử dụng trong JUnit sẽ được đề cập trong này hướng dẫn.

Người chạy thử Junit

JUnit cung cấp một công cụ để thực hiện các trường hợp thử nghiệm của bạn.

  • JUnitTrung tâm lớp được sử dụng để thực hiện các thử nghiệm này.
  • Một phương pháp được gọi là lớp học chạy được cung cấp bởi org.junit.runner.JUnitCốt lõi, được sử dụng để chạy một hoặc một số lớp kiểm tra.
  • Kiểu trả về của phương thức này là Kết quả vật (org.junit.runner.Kết quả), đượ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.
public class Test {				
			public static void main(String[] args) {									
       		Result result = JUnitCore.runClasses(CreateAndSetName.class);					
			for (Failure failure : result.getFailures()) {							
         		System.out.println(failure.toString());					
      }		
      System.out.println(result.wasSuccessful());					
   }		
}      

Trong đoạn mã trên, đối tượng “kết quả” được xử lý để nhận kết quả thất bại và thành công của các trường hợp thử nghiệm mà chúng tôi đang thực hiện.

Tên JUnit chương trình

Kiến thức khá tốt về SDLC, lập trình java và các khái niệm cơ bản về kiểm thử phần mềm quá trình giúp hiểu biết JUnit chương trình.

Hãy hiểu Kiểm tra đơn vị bằng một ví dụ trực tiếp. Chúng ta cần tạo một lớp thử nghiệm với phương thức thử nghiệm được chú thích bằng @Thử nghiệm như được đưa ra dưới đây:

MyFirstClassTest.java

package guru99.JUnit;		

import static org.JUnit.Assert.*;				

import org.JUnit.Test;		

public class MyFirstClassTest {				

    @Test		
    public void myFirstMethod(){					
        String str= "JUnit is working fine";					
        assertEquals("JUnit is working fine",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 JUnitPhương thức runclasses() của Core. Nó sẽ trả về kết quả kiểm tra, dựa trên việc kiểm tra đạt hay thất bại.

Để biết thêm chi tiết về điều này, hãy xem mã bên dưới:

package guru99.JUnit;		

import org.JUnit.runner.JUnitCore;		
import org.JUnit.runner.Result;		
import org.JUnit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
            Result result = JUnitCore.runClasses(MyFirstClassTest.class);					
			for (Failure failure : result.getFailures()) {							
              System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

Đầu ra

Một khi TestRunner.java thực hiện 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ả là không thành công hoặc đạt. Vui lòng tìm giải thích đầu ra bên dưới:

  1. Trong ví dụ này, sau khi thực hiện MyFirstClassTest.java , bài kiểm tra đã đạt và kết quả có màu xanh lục.
  2. Nếu nó thất bại thì nó phải hiển thị kết quả là Màu đỏ và lỗi có thể được quan sát thấy trong dấu vết lỗi. Xem bên dưới JUnit gui :

JUnit đầu ra chương trình

Tổng kết

  • JUnit là một khung hỗ trợ một số chú thích để xác định một phương thức có chứa bài kiểm tra.
  • JUnit cung cấp một chú thích được gọi là @Bài kiểm tra, điều đó cho biết JUnit rằng phương thức public void mà nó được sử dụng có thể chạy dưới dạng trường hợp thử nghiệm.
  • Một thử nghiệm cố định là một bối cảnh trong đó một trường hợp thử nghiệm chạy
  • Để thực hiện nhiều thử nghiệm theo một thứ tự cụ thể, có thể thực hiện bằng cách kết hợp tất cả các thử nghiệm ở một nơi. Nơi này được gọi là phòng thử nghiệm.
  • JUnit cung cấp một công cụ để thực hiện các thử nghiệm trong đó chúng tôi có thể chạy các trường hợp thử nghiệm của mình được gọi là Người chạy thử nghiệm.