Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- error
- 로그
- TDD
- MongoDB
- gradle
- 로그 시스템
- Spring Boot
- AWS IAM
- crud-update
- aws
- aws 접근 권한
- @Transactional
- iam user 새성
- java
- jpa
- Exception
- 카카오 소셜 로그인 에러 #카카오 소셜로그인 redirect #카카오소셜로그인 프런트 연동 에러
- iam user
- spring
- 에러 모니터링
- SENTRY
- exceptionHandler
- 테스트 주도 개발
- 예외 처리
- SQL
- Redis
- nosql
Archives
- Today
- Total
zini's blog
5장 JUnit 5기초 본문
JUnit 5 모듈 구성
- JUnit은 크게 세가지 요소로 구성
- JUnit 플랫폼 : 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API 제공
- JUnit Jupiter : JUnit 5를 위한 테스트 API와 실행 엔진 제공
- JUnit Vintage : JUnit 3,4 로 작성된 테스트를 Junit 5 플랫폼에서 실행하기 위한 모듈 제공
- JUnit Jupiter API를 테스트 구현으로 사용하도록 설정
- 사용 위해선 주피터 모듈을 의존성에 추가 (maven, gradle 파일에 추가)
- junit-jupiter 모듈에는 테스트 코드를 작성하고 실행하기 위한 junit-jupiter-api, params, engine 모듈을 포함하고 있음
- 사용 위해선 주피터 모듈을 의존성에 추가 (maven, gradle 파일에 추가)
- JUnit 플랫폼을 이용해서 테스트를 실행하도록 설정
- JUnit 5를 이용해서 테스트 실행하려면 JUnit 5 플랫폼이 제공하는 플랫폼 런처를 사용해야 함
...
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.5.0')
}
test {
useJUnitPlatform()
...
@ Test 애노테이션과 테스트 메서드
- JUnit 기본 구조
- 테스트로 사용할 클래스 만들고 @Test 애노테이션 붙이기
- 클래스 이름에는 주로 ‘Test’ 접미사를 붙임
- @Test 애노테이션 붙인 메서드는 private이면 안됨
- 테스트로 사용할 클래스 만들고 @Test 애노테이션 붙이기
주요 단언 메서드
- Assertions 클래스
- assertEquals(expected, actual) : 실제값과 기댓값 같은지 검사
- assertNotEquals(unexpected, actual) : 실제값과 기댓값 같지 않은지 검사
- assertSame(Object expected, Objest actual) : 두 객체가 동일한 객체인지 검사
- assertNotSame(Object unexpected, Objest actual) : 두 객체가 동일한 객체가 아닌지 검사
- assertTrue(boolean condition) : 값이 true인지 검사
- assertFalse(boolean condition) : 값이 false인지 검사
- assertNull(Object actual) : 값이 null인지 검사
- assertNotNull(Object actual) : 값이 null이 아닌지 검사
- fail() : 테스트를 실패 처리 (테스트를 실패했음을 알리고 싶을 때 사용)
- 익셉션 발생 유무가 검증 대상이라면
- asserThrows(Class<T> expectedType, Executable executable) : executable을 실행한 결과로 지정한 타입의 익셉션이 발생하는지 검사
- asserDoesNotThrows(Executable executable) : executable을 실행한 결과로 익셉션이 발생하지 않는지 검사
- 위의 assertThrows() 메서드는 발생한 익셉션을 리턴
- 위의 두 메서드에서 사용하는 Executable 인터페이스는 execute() 메서드를 가진 함수형 인터페이스
- assert 메서드는 실패하면 다음 코드 실행하지 않고 바로 익셉션을 발생함.
- 모든 검증을 실행하고 그 중 실패한 것을 확인하고 싶다면? ⇒ assertAll() 메서드 사용
- assertAll() 메서드 안에 Executable 목록을 가변 인자로 전달 받아 실행
테스트 라이프사이클
- @BeforeEach 애노테이션과 @AfterEach 애노테이션
- @BeforeEach : 필요한 준비 작업 할 때 사용
- @AfterEach : 실행 후 정리할 것 있을 때 사용
- ! @Test 애노테이션과 마찬가지로 메소드가 private이면 안됨
- JUnit 코드 실행 순서
- 테스트 메서드 포함한 객체 생성
- (존재하면) @BeforeEach 붙은 메서드 실행
- @Test 붙은 메서드 실행
- (존재하면) @AfterEach 붙은 메서드 실행
- @BeforeAll 애노테이션과 @AfterAll 애노테이션
- @BeforeAll : 클래스의 모든 테스트 메서드 실행하기 전에 실행됨
- @AfterAll : 클래스의 모든 테스트 메서드 실행한 뒤 실행됨
- ! 둘 다 정적 메서드에 붙임
테스트 메서드 간 실행 순서 의존과 필드 공유하지 않기
- 테스트 메서드가 특정 순서대로 실행된다는 가정 하에 테스트 메서드를 작성하면 안됨
- 각 테스트 메서드는 서로 독립적으로 동작해야 함 (서로 의존 생기면 X)
@DisplayName, @Diabled
- @DisplayName : 테스트 이름 붙이기
- @Diabled : 특정 메서드 실행하고 싶지 않을 때 사용 (테스트 대상에서 제외)
모든 테스트 실행하기
- 푸시나 배포 전 반드시 모든 테스트를 실행해봐야함
- mvn test (또는 mvnw test)
- gradle test (또는 gradlew test)
- mvnw test : 실행한 테스트 결과 콘솔에 출력
⌈테스트 주도 개발 시작하기⌋ 책 스터디를 진행하며 작성한 글입니다.
책 출처: 최범균, ⌈테스트 주도 개발 시작하기⌋, 가메출판사
'스터디 > 테스트 주도 개발 시작하기' 카테고리의 다른 글
4장 TDD-기능 명세-설계 (0) | 2024.09.26 |
---|---|
3장 테스트 코드 작성 순서 (0) | 2024.09.13 |
2장 TDD 시작 (0) | 2024.09.07 |
1장 TDD 개발 준비 (0) | 2024.09.07 |