런타임 예외를 테스트할 때는 하나의 함수 호출만 필요합니다.

 

런타임 예외를 발생시키는 코드를 검증할 때, 모범 사례는 어떤 함수 호출이 예외를 일으키는지 명백하게 예상하기 위해서, 여러 개의 함수 호출을 테스트 코드 안에 넣는 것을 피하는 것입니다.

이 방법은 테스트의 명확성을 높이고 다른 함수가 실제로 예외를 발생시킬 때 부정확한 테스트를 방지합니다.

규칙을 어긴 코드

@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. :star2:

원문으로 바로가기

Star This Project