อัปเดต: JUnit5 มีการปรับปรุงสำหรับการทดสอบข้อยกเว้น:assertThrows
มีการปรับปรุงสำหรับข้อยกเว้นการทดสอบ:
ตัวอย่างต่อไปนี้มาจาก: คู่มือผู้ใช้ Junit 5
@Test
void exceptionTesting() {
Throwable exception = assertThrows(IllegalArgumentException.class, () ->
{
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
คำตอบเดิมโดยใช้ JUnit 4
มีหลายวิธีในการทดสอบว่ามีการโยนข้อยกเว้น ฉันยังได้กล่าวถึงตัวเลือกด้านล่างในโพสต์ของฉันวิธีการเขียนการทดสอบหน่วยที่ยอดเยี่ยมกับ JUnit
ตั้งค่าพารามิเตอร์expected
@Test(expected = FileNotFoundException.class)
@Test(expected = FileNotFoundException.class)
public void testReadFile() {
myClass.readFile("test.txt");
}
การใช้ try
catch
public void testReadFile() {
try {
myClass.readFile("test.txt");
fail("Expected a FileNotFoundException to be thrown");
} catch (FileNotFoundException e) {
assertThat(e.getMessage(), is("The file test.txt does not exist!"));
}
}
ทดสอบกับExpectedException
กฎ
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testReadFile() throws FileNotFoundException {
thrown.expect(FileNotFoundException.class);
thrown.expectMessage(startsWith("The file test.txt"));
myClass.readFile("test.txt");
}
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับข้อยกเว้นการทดสอบในJUnit4 วิกิพีเดียสำหรับการทดสอบข้อยกเว้นและbad.robot - คาดว่าข้อยกเว้น JUnit กฎ
org.mockito.Mockito.verify
ด้วยพารามิเตอร์ต่าง ๆ เพื่อให้แน่ใจว่าสิ่งต่าง ๆ เกิดขึ้น (เช่นบริการตัวบันทึกถูกเรียกด้วยพารามิเตอร์ที่ถูกต้อง) ก่อนที่จะถูกโยนทิ้ง