티스토리 뷰
language/kotlin
[JUnit5] 생성 test, 조회 test 같이 돌리면 실패하는 이유 : @AfterEach 어노테이션 활용하기
daeuun 2023. 2. 4. 18:09각각의 테스트를 실행하면 성공하지만, 전체 테스트를 돌리면 실패하는 이유?
: Spring Context 를 공유하기 때문
//Expected size: 2 but was: 3 in:
//[com.group.libraryapp.dto.user.response.UserResponse@69862a1,
// com.group.libraryapp.dto.user.response.UserResponse@585718dd,
// com.group.libraryapp.dto.user.response.UserResponse@5a644d75]
//java.lang.AssertionError:
생성 테스트 - 조회 테스트
1. 최초 생성 테스트 : DB에 user 데이터 1명 추가
@Test
fun saveUserTest() {
//given
val request = UserCreateRequest("daeun", null)
//when
userService.saveUser(request)
//then
val result = userRepository.findAll()
assertThat(result).hasSize(1)
assertThat(result[0].name).isEqualTo("daeun")
assertThat(result[0].age).isNull() // platform types: type 설정해놓으면 해당 값이 nullable 인지 아닌지 알 수 없음
}
2. 조회 테스트에서 다시 DB에 user 데이터 2명을 추가함
@Test
fun getUsersTest() {
//given
userRepository.saveAll(listOf(
User("A", 20),
User("B", null)
))
//when
val results = userService.getUsers()
//then
assertThat(results).hasSize(2) // [UserResponse(), UserResponse()]
assertThat(results).extracting("name").containsExactlyInAnyOrder("A", "B") // ["A", "B"]
assertThat(results).extracting("age").containsExactlyInAnyOrder(20, null)
}
➡️ context를 공유하기 때문에 최종적으로 1+2 = 3명이 됨
그래서 테스트가 끝나면 공유 자원 DB를 비워줘야 한다!
@AfterEach
@BeforeEach
@AfterEach
JUnit5에서 테스트 할때, 해당 test class의 시작과 끝에 단 한번씩만 호출
@AfterEach
fun clean() {
userRepository.deleteAll()
}
반응형
'language > kotlin' 카테고리의 다른 글
kotlin - Jpa QueryDsl 다이나믹 쿼리로 where의 특정 조건 체크하기 (0) | 2023.03.02 |
---|---|
@Enumerated(EnumType.STRING) (0) | 2023.02.12 |
Kotlin - Property Setter 사용법 (0) | 2023.02.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 티스토리챌린지
- dto 클래스 생성자
- Java
- 스프링오류
- 추상클래스
- QueryDSL
- junit5
- redisson 분산락
- Cannot construct instance of
- n+1
- 배열
- jvm warm-up 전략
- Linux
- 자바 어플리케이션 실행 과정
- 오블완
- Spring Security
- JPA
- FetchJoin
- port
- ChatGPT
- addFilterBefore
- Git
- bucket4j
- 스프링 스케줄링
- checkout
- MongoDB
- spring boot 3
- MultipleBagFetchException
- Kotlin
- array
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함