JUnit 5 Assertion

The Java JUnit 5 Assertion

백기선님의 강의인 The Java 애플리케이션을 테스트하는 다양한 방법을 듣고 공부한 내용을 정리한 글

Assertion이란

테스트의 결과를 검증하기 위한 다양한 메소드 기능을 제공한다.

기본적으로 JUnit이 제공하는 기능이다.

aasertNotNull(actual)

해당 값이 Null인지를 검사해준다.

aasertEquals(expect,actual,message)

aasertEquals는 기본적으로 기대 값, 실제 값, 메시지 세개의 값을 매개변수로 받는다.

이때 메시지는 람다식이 가능한데, 만약 문자열 연산의 비용이 큰 경우라면 람다식을 사용함으로써 에러가 발생할 때만 문자열 연산을 수행하기 때문에 성능의 이점을 노려볼 수 있다. (Lazy Evaluation)

assertTrue(actual)

매개변수의 조건이 참인지 확인할 때 사용한다.

assertAll(executables…)

함수형 인터페이스들을 매개변수로 받을 수 있다.

기본적으로 매개변수들은 람다형으로 선언된다.

가령 테스트를 검증하는 assertNotNull,assertTrue 등의 검증들을 모두 묶어서 한번에 처리가 가능하다.

assertThrows(expectedType, executable)

내가 만든 예외 메시지와 실제 에러 메시지가 같은지 비교할 때 사용한다.

assertTimeout(duration, executable)

특정 시간 안에 실행이 완료되는지 확인할때 사용한다.

assertTimeout은 기대한 시간보다 큰 경우 전체 코드를 실행하고 나서 그 시간을 비교한다.

그런데 만약 내가 지정한 시간을 지난 경우 전체 코드를 실행하지 않고 실패처리를 하게 하고 싶은 경우가 있을 수 있다.

이 때 사용하는 메소드가 assertTimeoutPreemptively이다.

assertTimeoutPreemptively를 사용하면 원하는 시간보다 넘어갈 경우 거기서 즉시 테스트 실패를 반환한다.

대신 사용할 때 주의를 요하는데, 만약 Thread Local을 사용하는 코드라면 예상치 못한 결과를 얻을 수도 있다.

유사품

AssertJ나 Hermcrest 등과 같이 Aseertion을 좀 더 쉽게 사용할 수 있게 만들어주는 라이브러리들도 존재한다.

Reference

백기선님 인프런 강의 더 자바, 애플리케이션을 테스트하는 다양한 방법



© 2022. by minkuk

Powered by minkuk