[TDD] JUnit5

JiKwang Jeong·2022년 5월 17일
0

이 글은 최범균님의 테스트 주도 개발 시작하기라는 책을 참고하였습니다.
http://m.yes24.com/Goods/Detail/89145195

JUnit5

@Test 애노테이션과 테스트 메서드

테스트 클래스 이름을 작성하는 특별한 규칙은 없지만 보통 다른 클래스와 구분을 쉽게하기 위해 'Test'를 접미사로 붙인다. 테스트를 실행할 메서드에는 @Test 애노테이션을 붙인다. 이때 @Test 애노테이션을 붙인 메서드는 private이면 안 된다.

주요 단언 메서드

메서드설명
assertEquals(expected, actual)실제 값이 기대하는 값과 같은지 검사한다.
assertNotEquals(expected, actual)실제 값이 특정 값과 같지 않은지 검사한다.
assertSame(Object expected, Object actual)두 객체가 동일한 객체인지 검사한다.
assertNotSame(Object expected, Object actual)두 객체가 동일하지 않은 객체인지 검사한다.
assertTrue(boolean condition)값이 true인지 검사한다.
assertFalse(boolean condition)값이 false인지 검사한다.
assertNull(Object actual)값이 null인지 검사한다.
assertNotNull(Object actual)값이 null이 아닌지 검사한다.
fail()테스트를 실패 처리한다.

Assertions가 제공하는 익셉션 발생 유무 검사 메서드

메서드설명
assertThrows(Class expectedType, Executable executable)executable을 실행한 결과로 지정한 타입의 익셉션이 발생하는지 검사한다.
assertDoesNotThrow(Executable executable)executable을 실행한 결과로 익셉션이 발생하지 않는지 검사한다.

Test 라이프사이클

@BeforeEach 와 @AfterEach

JUnit은 각 테스트 메서드마다 다음 순서대로 코드를 실행한다.
1. 테스트 메서드를 포함한 객체 생성
2. (존재하면) @BeforeEach 애노테이션이 붙은 메서드 실행
3. @Test 애노테이션이 붙은 메서드 실행
4. (존재하면) @AfterEach 애노테이션이 붙은 메서드 실행

  • @BeforeEach
    테스트에서 사용할 임시 파일을 생성한다거나 테스트 메서드에서 사용할 객체를 생성한다.
  • @AfterEach
    테스트를 실행한 후에 정리할 것이 있을 때 사용한다.
    테스트에서 사용한 임시 파일을 삭제해야할 때 사용한다.
  • 두 애노테이션을 붙인 메서드는 private이면 안 된다.

@BeforeAll 과 @AfterAll

  • @BeforeAll
    한 클래스의 모든 테스트 메서드가 실행되기 전에 특정 작업을 수행해야할 때 붙인다.
    이 메서드는 클래스의 모든 테스트 메서드를 실행하기 전에 한 번 실행된다.
  • @AfterAll
    클래스의 모든 테스트 메서드를 실행한 뒤에 실행된다. 이 메서드 역시 정적 메서드에 적용한다.

테스트 메서드 간 실행 순서 의존과 필드를 공유하지 않는다.
Junit은 테스트 메서드의 실행 순서를 지정하는 방법을 제공하고 있다. 하지만 각 테스트 메서드는 독립적으로 동작해야 한다. 테스트 메서드 간에 의존이 새기면 이는 테스트 코드의 유지보수를 어렵게 만든다. 테스트 코드 역시 코드이므로 유지보수가 중요하다. 테스트 코드를 작성할 때에는 이 점에 유념해야 한다.

추가 애노테이션: @DisplayName, @Disabled

  • @DisplayName
    테스트에 표시 이름을 붙일 수 있다.
  • @Disabled
    특정 테스트를 실행하고 싶지 않을 때 사용한다.

모든 테스트 실행하기

  • Maven
    mvn test (래퍼를 사용하는 경우 mvnw test)
  • Gradle
    gradle test (래퍼를 사용하는 경우 gradlew test)
profile
기억보다 기록, 난리보다 정리

0개의 댓글