JUnit Kiểm tra ngoại lệ dự kiến: @Test(expected)

JUnit cung cấp khả năng theo dõi ngoại lệ và kiểm tra xem mã có đưa ra ngoại lệ mong đợi hay không.

Junit4 cung cấp một cách dễ dàng và dễ đọc để kiểm tra ngoại lệ, bạn có thể sử dụng

  • Tham số tùy chọn (dự kiến) của chú thích @test và
  • Để theo dõi thông tin, có thể sử dụng ,”fail()”

Trong khi Kiểm tra ngoại lệ, bạn cần đảm bảo rằng lớp ngoại lệ bạn đang cung cấp trong tham số tùy chọn của chú thích @test là giống nhau. Điều này là do bạn đang mong đợi một ngoại lệ từ phương pháp bạn đang thực hiện Kiểm tra đơn vị, nếu không thì của chúng tôi JUnit thử nghiệm sẽ thất bại.

Ví dụ@Test(expected=IllegalArgumentException.class)

Bằng cách sử dụng tham số “dự kiến”, bạn có thể chỉ định tên ngoại lệ mà thử nghiệm của chúng tôi có thể đưa ra. Trong ví dụ trên, bạn đang sử dụng “Ngoại lệ Đối số bất hợp pháp" sẽ được kiểm tra đưa ra nếu nhà phát triển sử dụng đối số không được phép.

Ví dụ sử dụng @test(expected)

Hãy hiểu việc kiểm tra ngoại lệ bằng cách tạo một Java lớp với một phương thức ném ra một ngoại lệ. Bạn sẽ xử lý nó và kiểm tra nó trong một lớp kiểm tra. Hãy xem xét JUnitMessage.java có một phương thức chỉ thực hiện một phép toán dựa trên dữ liệu đầu vào mà người dùng nhận được. Nếu bất kỳ đối số bất hợp pháp nào được nhập vào, nó sẽ đưa ra “ArithmeticException”. Xem bên dưới:

Ví dụ sử dụng @Test

package guru99.junit;

public class JUnitMessage{

	private String message;

	public JUnitMessage(String message) {
		this.message = message;
	}

public void printMessage(){

	System.out.println(message); 
	int divide=1/0;

}

public String printHiMessage(){ 

	message="Hi!" + message;
	
	System.out.println(message);

	return message;
}

}

Giải thích mã:

  • Dòng mã 7: Tạo một hàm tạo được tham số hóa với việc khởi tạo trường.
  • Dòng mã 11-14: Xây dựng phương pháp thực hiện phép tính.
  • Dòng mã 18: Tạo một phương pháp khác để in tin nhắn.
  • Dòng mã 20: Tạo một chuỗi mới để in một tin nhắn.
  • Dòng mã 21: In tin nhắn mới được tạo ở dòng 20.

Hãy tạo một lớp thử nghiệm cho lớp java ở trên để xác minh ngoại lệ.

Xem lớp kiểm tra bên dưới để kiểm tra ngoại lệ đơn vị (ArithmeticException tại đây) ném từ lớp Java phía trên:

AirthematicTest.java

AirthematicTest.Java

package guru99.junit;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class AirthematicTest {

	public String message = "Saurabh";
	
	JUnitMessage junitMessage = new JUnitMessage(message);
	
	@Test(expected = ArithmeticException.class)
	public void testJUnitMessage(){

		System.out.println("Junit Message is printing ");
		junitMessage.printMessage();

	}

	@Test
	public void testJUnitHiMessage(){ 
		message="Hi!" + message;
		System.out.println("Junit Message is printing ");
		assertEquals(message, junitMessage.printMessage());
	
	}
}

Giải thích mã:

  • Dòng mã 13: Sử dụng chú thích @Test để tạo thử nghiệm của chúng tôi. Khi bạn thực thi phương thức của lớp trên, nó sẽ gọi một phép toán. Ở đây có Ngoại lệ số học được mong đợi, vì vậy bạn liệt kê nó dưới dạng tham số trong @Test.
  • Dòng mã 17: Gọi printMessage() JUnitTin nhắn.java
  • Dòng mã 18: Tạo một phương thức khác để in thông báo HI.

Nếu bạn thực thi lớp kiểm tra này, phương thức kiểm tra sẽ được thực thi với từng tham số được xác định. Trong ví dụ trên, phương pháp thử nghiệm được thực hiện năm lần.

Hãy thực hiện nó và xác minh kết quả. Xem bên dưới lớp người chạy thử để thực thi JunitTestExample.java

Đầu ra:

Đây là kết quả đầu ra cho thấy thử nghiệm thành công không có dấu vết lỗi như được đưa ra dưới đây:

AirthematicTest.Java Đầu ra

Tổng kết

  • Kiểm tra ngoại lệ là một tính năng đặc biệt được giới thiệu trong JUnit4. Trong hướng dẫn này, bạn đã học cách kiểm tra ngoại lệ trong JUnit sử dụng @test (ngoại trừ)
  • Junit cung cấp tiện ích để theo dõi ngoại lệ và cũng để kiểm tra xem mã có đưa ra ngoại lệ hay không
  • Để kiểm tra ngoại lệ, bạn có thể sử dụng
    • Tham số tùy chọn (dự kiến) của chú thích @test và
    • Để theo dõi thông tin, có thể sử dụng ,”fail()”