일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정보처리산업기사
- BFS
- 공부일지
- 백준알고리즘
- SQL
- SW봉사
- 1과목
- 알고리즘
- python
- 소프티어
- java
- kotlin
- softeer
- 코틀린
- 문제풀이
- programmers
- 코딩교육봉사
- 백준 알고리즘
- 프로그래머스
- MYSQL
- 회고
- CJ UNIT
- 스프링
- 데이터베이스
- C++
- 백준
- 파이썬
- 자바
- 코딩봉사
- 시나공
Archives
- Today
- Total
JIE0025
[개선] 테스팅 빌드 속도 개선 본문
728x90
✅ 문제 요약
통합테스트에서 데이터베이스 이슈 : 각각은 잘 동작하지만 전체 동작시 실패
해결방안으로 @DirtiesContext를 사용했으나,
해당 어노테이션을 사용하면 전체 DB를 초기화하며 빌드 속도가 너무 느리다는 단점이 생겼음
개선 이전 : 총 테스트시간이 2sec, 242ms
https://jie0025.tistory.com/385
✅ @DirtiesContext 사용으로 인한 빌드 속도 개선
통합테스트라는 특징을 살려서 데이터베이스 초기화 없이 그대로 사용하기로 했다.
알아보니까 테스트메서드의 실행 우선순위를 지정할 수 있는 어노테이션이 존재했다.
https://awse2050.tistory.com/63
depth0 추가 → depth1 추가 → 수정 → 전체 읽기 → 삭제 순으로 하면 문제가 생길수가 없다!
⏺ 클래스 레벨에 @TestMethodOrder 어노테이션을 붙힌다.
속성값으로 3개를 사용할 수 있는데, 어떤 순서로 우선순위를 만들지 결정한다.
- MethodOrderer.MethodName.class :: 메서드이름으로 테스트 우선순위 지정
- MethodOrderer.DisplayName.class :: DisplayName으로 테스트 우선순위 지정
- MethodOrderer.OrderAnnotation.class :: Order 어노테이션을 이용한 테스트 우선순위 지정
- @Order(1) 어노테이션을 메서드레벨에 추가해 순서를 지정한다.
@Order를 직관적이긴 했지만 한줄씩 더 추가하는건 좋은건가? 생각이 들었다.
어차피 테스트 개수도 많지 않았고, 이미 순서를 위에서부터 아래로 작성해놨어서 DisplayName으로 설정했다.
@TestMethodOrder(value = MethodOrderer.DisplayName.class)
@DisplayName 순서로 테스트가 진행되어 문제가 해결되었다.!
개선 이전 총 테스트시간 2sec, 242ms
개선 이후 총 테스트시간 : 318ms
@DirtiesContext를 사용하면 하나하나 테스트가 오래걸렸었는데,
이를통해 훨씬 개선된것을 확인했다 😆
'백엔드 > 테스트' 카테고리의 다른 글
[MockK] 코틀린을 위한 mocking library, 단위테스트 작성방법 (0) | 2023.06.07 |
---|---|
성능테스트 도구 JMeter란? 설치(MacOS, M1) (0) | 2023.06.03 |
[Testcode][통합] CategoryIntegrationTest (0) | 2023.01.09 |
[Testcode][슬라이스][Service] CategoryServiceTest (0) | 2023.01.09 |
[Testcode][슬라이스][Controller] CategoryControllerTest (0) | 2023.01.09 |