런타임 예외를 발생시키는 코드를 검증할 때, 모범 사례는 어떤 함수 호출이 예외를 일으키는지 명백하게 예상하기 위해서, 여러 개의 함수 호출을 테스트 코드 안에 넣는 것을 피하는 것입니다.
이 방법은 테스트의 명확성을 높이고 다른 함수가 실제로 예외를 발생시킬 때 부정확한 테스트를 방지합니다.
규칙을 어긴 코드
@Test
public void testToString() {
// get() 또는 toString()이 예외를 발생시킬 것이라고 생각합니까?
org.junit.Assert.assertThrows(IndexOutOfBoundsException.class, () -> get().toString());
}
@Test
public void testToStringTryCatchIdiom() {
try {
// get() 또는 toString()이 예외를 발생시킬 것이라고 생각합니까?
get().toString();
Assert.fail("Expected an IndexOutOfBoundsException to be thrown");
} catch (IndexOutOfBoundsException e) {
// Test exception message...
}
}
규칙을 준수한 코드
@Test
public void testToString() {
Object obj = get();
Assert.assertThrows(IndexOutOfBoundsException.class, () -> obj.toString());
}
@Test
public void testToStringTryCatchIdiom() {
Object obj = get();
try {
obj.toString();
Assert.fail("Expected an IndexOutOfBoundsException to be thrown");
} catch (IndexOutOfBoundsException e) {
// Test exception message...
}
}
참고
If you like SONARKUBE, don’t forget to give me a star.