You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
내가 사용하는 Junit 버전은 5였기 때문에 위의 코드를 따라치자 Cannot resolve method ‘expected’ 라는 오류가 발생했다. 찾아보니 Junit 5에서는 expected 속성을 지원하지 않아 발생되는 오류였으며 대신에 Junit5에서는 assertThrows 메서드를 사용하여 예외가 발생하는지 확인할 수 있다고 한다. (assertThrows 메서드는 특정 블록이 예외를 던지는지 확인하는 메서드라고 하네요.)
아래 코드는 강의에서의 코드를 assertThrows 메서드를 활용하여 재작성한 코드이다.
Junit4를 사용한 강의 코드에서는 expected로 인해 IllegalStateException이 발생하면 해당 예외로 인해 테스트가 즉시 종료되어 fail함수가 실행되지 않아 테스트가 성공하게 된다.
하지만 Junit5에서는 IllegalStateException이 발생하면, 이 예외는 assertThrows에 의해 잡히게 되고 해당 함수를 성공적으로 통과하지만 테스트가 종료되지 않고 아래로 내려가 fail함수를 실행하여 테스트가 실패하게 되는 것이다. 즉, 해당 예외가 발생하면 assertThrows는 성공으로 수행된 후, 테스트를 종료하지 않고 테스트를 강제로 실패하게 하는 이후의 코드인 fail함수를 실행하여 테스트가 실패하게 되는 것이다.
무엇을 알게 되었나요?
강의에서는 테스트코드를 Junit4를 이용해서 아래와 같이 작성하고 있다.
내가 사용하는 Junit 버전은 5였기 때문에 위의 코드를 따라치자
Cannot resolve method ‘expected’
라는 오류가 발생했다. 찾아보니 Junit 5에서는expected
속성을 지원하지 않아 발생되는 오류였으며 대신에 Junit5에서는assertThrows
메서드를 사용하여 예외가 발생하는지 확인할 수 있다고 한다. (assertThrows
메서드는 특정 블록이 예외를 던지는지 확인하는 메서드라고 하네요.)아래 코드는 강의에서의 코드를
assertThrows
메서드를 활용하여 재작성한 코드이다.참고로 처음에 테스트코드에 사용한 함수들에 대한 명확한 이해없이
assertThrows
함수 아래에fail("예외가 발생해야 한다!")
을 작성하니 테스트가 실패하는 오류가 발생하였다. 즉 아래처럼 테스트 코드를 작성했다.Junit4를 사용한 강의 코드에서는
expected
로 인해IllegalStateException
이 발생하면 해당 예외로 인해 테스트가 즉시 종료되어fail
함수가 실행되지 않아 테스트가 성공하게 된다.하지만 Junit5에서는
IllegalStateException
이 발생하면, 이 예외는assertThrows
에 의해 잡히게 되고 해당 함수를 성공적으로 통과하지만 테스트가 종료되지 않고 아래로 내려가fail
함수를 실행하여 테스트가 실패하게 되는 것이다. 즉, 해당 예외가 발생하면assertThrows
는 성공으로 수행된 후, 테스트를 종료하지 않고 테스트를 강제로 실패하게 하는 이후의 코드인fail
함수를 실행하여 테스트가 실패하게 되는 것이다.어려운 내용이 있었다면 이를 어떻게 해결하였나요?
어떤 자료를 참고하였나요?
The text was updated successfully, but these errors were encountered: