JUnit การทดสอบข้อยกเว้นที่คาดหวัง: @Test(คาดหวัง)

JUnit ให้ความสามารถในการติดตามข้อยกเว้นและตรวจสอบว่าโค้ดกำลังโยนข้อยกเว้นตามที่คาดไว้หรือไม่

Junit4 มอบวิธีการที่ง่ายและอ่านได้สำหรับการทดสอบข้อยกเว้น คุณสามารถใช้

  • พารามิเตอร์ทางเลือก (คาดไว้) ของคำอธิบายประกอบ @test และ
  • เพื่อติดตามข้อมูล ”fail()” สามารถใช้ได้

ในขณะที่ การทดสอบ ข้อยกเว้น คุณต้องแน่ใจว่าคลาสข้อยกเว้นที่คุณระบุในพารามิเตอร์ทางเลือกนั้น @ทดสอบคำอธิบายประกอบ เหมือนกัน. เนื่องจากคุณคาดหวังข้อยกเว้นจากวิธีการที่คุณเป็น การทดสอบหน่วยมิฉะนั้นเรา JUnit การทดสอบจะล้มเหลว

ตัวอย่าง @ ทดสอบ (คาดหวัง = IllegalArgumentException.class)

เมื่อใช้พารามิเตอร์ “expected” คุณสามารถระบุชื่อข้อยกเว้นที่การทดสอบของเราอาจใช้ ในตัวอย่างข้างต้น คุณกำลังใช้ “ข้อยกเว้นข้อโต้แย้งที่ผิดกฎหมาย” ซึ่งจะถูกโยนทิ้งโดยการทดสอบหากนักพัฒนาใช้อาร์กิวเมนต์ที่ไม่ได้รับอนุญาต

ตัวอย่างการใช้ @test(คาดหวัง)

มาทำความเข้าใจการทดสอบข้อยกเว้นด้วยการสร้าง Java คลาสที่มีวิธีการโยนข้อยกเว้น คุณจะจัดการและทดสอบในคลาสทดสอบ พิจารณา JUnitMessage.java มีวิธีการที่ทำการคำนวณทางคณิตศาสตร์โดยอิงจากอินพุตที่ผู้ใช้รับเข้ามา หากป้อนอาร์กิวเมนต์ที่ไม่ถูกต้อง ระบบจะแสดง "ArithmeticException" ดังตัวอย่างด้านล่าง:

ตัวอย่างการใช้ @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;
}

}

คำอธิบายรหัส:

  • รหัสบรรทัด 7: การสร้างคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ด้วยการเริ่มต้นฟิลด์
  • รหัสบรรทัด 11-14: การสร้างวิธีการดำเนินการทางคณิตศาสตร์
  • รหัสบรรทัด 18: การสร้างวิธีอื่นในการพิมพ์ข้อความ
  • รหัสบรรทัด 20: การสร้างสตริงใหม่เพื่อพิมพ์ข้อความ
  • รหัสบรรทัด 21: พิมพ์ข้อความใหม่ที่สร้างขึ้นในบรรทัดที่ 20

มาสร้างคลาสทดสอบสำหรับคลาส Java ข้างต้นเพื่อตรวจสอบข้อยกเว้น

ดูด้านล่างทดสอบคลาสเพื่อทดสอบข้อยกเว้นยูนิต (ArithmeticException ที่นี่) จากคลาส Java ด้านบน:

AirthematicTest.java

การทดสอบ AirthematicJava

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());
	
	}
}

คำอธิบายรหัส:

  • รหัสบรรทัด 13: การใช้คำอธิบายประกอบ @Test เพื่อสร้างการทดสอบของเรา เมื่อคุณดำเนินการตามวิธีการคลาสข้างต้น ระบบจะเรียกใช้การดำเนินการทางคณิตศาสตร์ ที่นี่คาดว่าจะมีข้อยกเว้นทางคณิตศาสตร์ ดังนั้น คุณจึงแสดงรายการดังกล่าวเป็นพารามิเตอร์ใน @Test
  • รหัสบรรทัด 17: การเรียกใช้ printMessage() JUnitMessage.java
  • รหัสบรรทัด 18: การสร้างวิธีอื่นในการพิมพ์ข้อความ HI

หากคุณดำเนินการคลาสการทดสอบนี้ วิธีทดสอบจะดำเนินการกับพารามิเตอร์ที่กำหนดแต่ละตัว ในตัวอย่างข้างต้น วิธีทดสอบจะดำเนินการห้าครั้ง

มาดำเนินการและตรวจสอบผลลัพธ์กัน ดูคลาสนักวิ่งทดสอบด้านล่างเพื่อดำเนินการ ตัวอย่างการทดสอบ JunitTest.java

Output:

นี่คือผลลัพธ์ที่แสดงการทดสอบที่สำเร็จโดยไม่มีการติดตามความล้มเหลวดังที่ระบุด้านล่าง:

การทดสอบ AirthematicJava เอาท์พุต

สรุป

  • การทดสอบข้อยกเว้นเป็นคุณลักษณะพิเศษที่นำมาใช้ JUnit4. ในบทช่วยสอนนี้ คุณได้เรียนรู้วิธีทดสอบข้อยกเว้นแล้ว JUnit ใช้ @test (ยกเว้น)
  • Junit มีสิ่งอำนวยความสะดวกในการติดตามข้อยกเว้นและตรวจสอบว่าโค้ดกำลังสร้างข้อยกเว้นหรือไม่
  • สำหรับการทดสอบข้อยกเว้น คุณสามารถใช้
    • พารามิเตอร์ทางเลือก (คาดไว้) ของคำอธิบายประกอบ @test และ
    • เพื่อติดตามข้อมูล ”fail()” สามารถใช้ได้

สรุปโพสต์นี้ด้วย: