목차

JUnit 5 모듈 구성

Assertions 클래스의 주요 단언 메서드

테스트 라이프사이클

테스트 메서드 간 실행 순서 의존과 필드 공유하지 않기

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

모든 테스트 실행하기

 

JUnit 5 모듈 구성

JUnit 5는 크게 세 개의 요소로 구성되어 있다.

  • JUnit 플랫폼 : 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API를 제공

  • JUnit 주피터(Jupiter) : JUnit 5를 위한 테스트 API와 실행 엔진을 제공

  • JUnit 빈티지(Vintage) : Junit 3과 4로 작성된 테스트를 JUnit 5 플랫폼에서 실행하기 위한 모듈을 제공

Assertions 클래스의 주요 단언 메서드

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

 

테스트 라이프사이클

■@BeforeEach 와 @AfeterEach

@BeforeEach 테스트를 실행하기 전  필요한 준비 작업을 할 때 사용
@AfeterEach 테스트를 실행한 후에 정리할 것이 있을때 사용 
  1. 테스트 메서드를 포함한 객체 생성
  2. (존재하면) @BeforeEach 애노테이션이 붙은 메서드 실행
  3. @Test 애노테이션이 붙은 메서드 실행
  4. (존재하면) @AfterEach 애노테이션이 붙은 메서드 실행

■@BeforeAll 와 @AfeterAll

@BeforeAll 한 클래스의 모든 테스트 메서드를 실행하기 전에 한번 실행
@AfeterAll 한 클래스의 모든 테스트 메서드를 실행한 후에 실행

 

테스트 메서드 간 실행 순서 의존과 필드 공유하지 않기

테스트를 할때  테스트 메서드를 작성한 순서 대로 실행된다는 가정하에 테스트 메서드를 작성하면 안된다.

 

각 테스트 메서드는 서로 독립적으로 동작해야 한다. (서로 의존하면 안된다.)

  • 하나의 테스트의 결과가 다른 테스트에 영향을 미치면 안된다.
  • 테스트 메서드가 서로 필드를 공유하면 안된다.

 

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

java 는 메서드 이름만으로 테스트의 내용을 설명하기 부족할 수 있다.

이때 @DisplayName("테스트 내용") 을 이용해서 테스트 설명 가능

모든 테스트 실행하기

모든 테스트를 실행하는 경우

  • 코드를 원격 리포지토리에 푸시하기 전
  • 코드를 빌드해서 운영 환경에 배포하기 전

모든 테스트를 실행하여 실패하는 테스트가 존재하면 코드 푸시와 배포를 멈추고 원인을 찾기 위함.

 

 

실행하는 방법

  • 메이븐 : mvn test
  • 그레이들 : gradle test
  • 인텔리J, 이클립스: src/test/java 폴더에서 JUnit Test 실행

+ Recent posts