목차
테스트 메서드 간 실행 순서 의존과 필드 공유하지 않기
추가 애노테이션: @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 | 테스트를 실행한 후에 정리할 것이 있을때 사용 |
- 테스트 메서드를 포함한 객체 생성
- (존재하면) @BeforeEach 애노테이션이 붙은 메서드 실행
- @Test 애노테이션이 붙은 메서드 실행
- (존재하면) @AfterEach 애노테이션이 붙은 메서드 실행
■@BeforeAll 와 @AfeterAll
@BeforeAll | 한 클래스의 모든 테스트 메서드를 실행하기 전에 한번 실행 |
@AfeterAll | 한 클래스의 모든 테스트 메서드를 실행한 후에 실행 |
테스트 메서드 간 실행 순서 의존과 필드 공유하지 않기
테스트를 할때 테스트 메서드를 작성한 순서 대로 실행된다는 가정하에 테스트 메서드를 작성하면 안된다.
→ 각 테스트 메서드는 서로 독립적으로 동작해야 한다. (서로 의존하면 안된다.)
- 하나의 테스트의 결과가 다른 테스트에 영향을 미치면 안된다.
- 테스트 메서드가 서로 필드를 공유하면 안된다.
추가 애노테이션: @DisplayName, @Disabled
java 는 메서드 이름만으로 테스트의 내용을 설명하기 부족할 수 있다.
이때 @DisplayName("테스트 내용") 을 이용해서 테스트 설명 가능
모든 테스트 실행하기
모든 테스트를 실행하는 경우
- 코드를 원격 리포지토리에 푸시하기 전
- 코드를 빌드해서 운영 환경에 배포하기 전
모든 테스트를 실행하여 실패하는 테스트가 존재하면 코드 푸시와 배포를 멈추고 원인을 찾기 위함.
실행하는 방법
- 메이븐 : mvn test
- 그레이들 : gradle test
- 인텔리J, 이클립스: src/test/java 폴더에서 JUnit Test 실행
'TDD > 테스트 주도 개발 시작하기' 카테고리의 다른 글
[ TDD ] [ 책 ] 8 장 테스트 가능한 설계 (0) | 2024.10.30 |
---|---|
[ TDD ] [ 책 ] 7 강 대역 (0) | 2024.10.28 |
[ TDD ][책] 4장 TDD 기능명세 설계 (0) | 2024.10.11 |
[TDD][책] 10. 테스트 코드와 유지보수 : 좋은 테스트 코드 란? (0) | 2024.10.10 |
[ TDD ] [책] 테스트 코드 작성 순서 (0) | 2024.10.03 |