Assertion 함수의 예외를 잡기 위해서는 try-catch 구문의 try 블럭이 사용되어서는 안됩니다.

 

Assertion 함수는 “java.lang.AssertionError”. 예외를 던집니다. 만약 Assertion 함수 호출이 try-catch 구문의 try 블럭에서 유사한 에러가 잡히며 끝나는 경우, 예외의 일부 속성을 테스트해야 합니다. 그렇지 않으면 assertion이 절대 실패하지 않습니다.

규칙을 어긴 코드

@Test
public void should_throw_assertion_error() {
    try {
        throwAssertionError();
        Assert.fail("Expected an AssertionError!"); // 규칙을 어긴 코드, 'AssertionError'는 catch에 잡힐 것이고 테스트는 절대 실패하지 않을 것 입니다. 
    } catch (AssertionError e) {}
}

private void throwAssertionError() {
    throw new AssertionError("My assertion error");
}

규칙을 준수한 해결책

assertThrows(AssertionError.class, () -> throwAssertionError());
try {
    throwAssertionError();
    Assert.fail("Expected an AssertionError!"); // 규칙을 준수한 해결책, 오류가 발생하는지 테스트합니다.
    Assert.assertThat(e.getMessage(), is("My assertion error"));
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project