JUnit 5 Assertion

Chori·2021년 11월 8일
1

JUnit 5

목록 보기
2/6
post-thumbnail

Assertion

assertEqulas(expected, actual)

실제 값기대한 값과 같은지 확인하는 메서드.
expected에 기대하는 값을 넣고, actual에 실제 값을 넣는다.
(순서는 상관없지만 API의 정의는 정해져있다.)

모든 Assertion 메서드에는 마지막 줄에 message를 남길 수 있다.

1) assertEquals(StudyStatus.DRAFT , study.getStatus(), "String으로 메시지를 넣을 수 있음");
2) assertEquals(StudyStatus.DRAFT , study.getStatus(), () -> "람다식으로 메시지를 넣을 수 있음");
3) assertEquals(StudyStatus.DRAFT , study.getStatus(), new Supplier<String>() {
	@Override
    	public String get() {
        	return "대충 만들 수 있는데, 서플라이어를 넣는다.";
        }
   });

위 코드에서 message를 작성하는 가장 기본이 되는 코드는 3번이다.
그러나 코드의 간결성생산성을 위해 1번 혹은 2번을 사용할 수 있다.
2번 람다식으로 메시지를 남기면 최대한 필요한 시점에 코드를 실행시켜 성능저하방지한다.
람다식이 아닌 방식으로 메시지를 작성하면 테스트를 성공하든 안하든 실행시킨다.

assertNotNull(actual)

값이 Null인지 아닌지 확인하는 메서드.

assertTrue(boolean)

다음 조건이 참(true)인지 확인하는 메서드.

assertTrue(study.getLimit() > 0, "스터디 참가인원은 0보다 커야 한다.");

불러온 값을 숫자 등과 비교하여 true, false 여부를 확인 할 수 있다.

assertAll(executables...)

assertAll 안에 있는 모든 Assertion을 확인하는 메서드.

assertAll(
	()-> assertNotNull(study), //객체가 Null인지 아닌지 확인
	()-> assertEquals(StudyStatus.DRAFT , study.getStatus(),
		() -> "대충 메시지를 넣을 수 있다는 내용"),
	()-> assertTrue(study.getLimit() > 0, "스터디 참가인원은 0보다 커야 한다.")
);

모든 assert의 실패 결과를 확인 할 수 있다.
Executable은 @FunctionalInterface로 메소드를 단 1개만 갖기 때문에 람다식을 사용해야 한다.
참고자료

assertThrows(expectedType, executable)

예외 발생을 확인하는 메서드.
특정 예외를 캐치하여 구문을 테스트 할 수 있다.

assertThrows(IllegalArgumentException.class, ()-> new Study(-10));

assertTimeout(duration, executable)

특정 시간 안에 실행이 완료되는지 확인하는 메서드.

assertTimeout(Duration.ofMillis(300), () -> { //300밀리초를 설정하여 테스트를 진행
	new Study(10); //구문중 실행이 300밀리초 내에 끝나야 함
	Thread.sleep(300); //쓰레드에 300밀리초의 딜레이를 줌으로써 예외를 발생시켜본다.
});

본 글는 백기선님의 더 자바, 애플리케이션을 테스트하는 다양한 방법을 수강하며 학습한 내용입니다.

profile
꾸준한 성장

0개의 댓글