우선 해야하는 테스트 방식이 궁금합니다.
550
投稿した質問数 1
안녕하세요 :)
평소 영한님 강의를 통해 많은 가르침을 받고 있는 주니어 개발자입니다.
만약 별도 Test DB 없이 Service 계층 테스트를 한다면,
크게 다음과 같은 세가지 테스트 방식이 있는 것으로 이해하였습니다!
Service 테스트에 @Transactional 추가하여, 테스트 수행 후 롤백
실제 DB에 수행하므로, insert시 유니크한 컬럼에 대해 이미 동일 데이터가 존재한다면 테스트 실패
Repository 의존성을 Mock 처리
Mock을 통해 행위를 검증하게되므로 보다 깨지기 쉬운 테스트가됨
임베디드 DB에 테스트 수행
임베디드 DB와 운영환경 DB의 차이점이 있을 수 있음
세가지 방식 모두 각자의 트레이드오프가 있을 것 같은데요.
권장되는 방식이나, 주로 사용하시는 테스트 방식이 궁금합니다.
回答 1
2
안녕하세요, 가즈아 님. 공식 서포터즈 y2gcoder 입니다.
말씀하신대로 각자의 테스트가 정답이 없고, 프로젝트 상황에 따라 달라질 수 있다고 생각합니다.
이에 대해서 스스로 고민해볼 수 있는 글이 있어 추천드리겠습니다.
https://sjquant.tistory.com/70
감사합니다.
0
답변과 링크 공유 감사드립니다 :)
제가 생각하기로는 운영 DB에 영향 주지 않으면서,
Mocking 없이 테스트가 가능한,
3안의 임베디드 DB 방안이 가장 나아보이긴 하는데요..!
제가 경험한 실무에서는, 임베디드 DB 를 사용해 테스트하는 경우가 많지 않더라구요ㅜ
아직 대중화가 안된건지,
아니면 임베디드 DB 를 실무에서 지양해야하는 별도의 이유가 있는건지 궁금합니다.
1
저도 경험이 많지 않아 조심스럽습니다만,
아무래도 질문글에서 말씀해주신 것과 같이 실제 운영 DB와 임베디드 DB 사이의 차이가 가장 큰 이유가 아닌가 싶습니다.
그래서 여건이 되는 곳에서는
로컬, 개발 서버, 스테이징 서버, 운영 서버로 개발 단계를 나누고
스테이징 서버에서는 실제 운영 서버와 동일한 환경을 만들어 테스트를 진행한다고 합니다. 아마도 그 단계에서 실제 DB와 동일한 환경의 테스트 환경을 만들어 테스트하는 과정도 진행되지 않을까 추측합니다.
0
아하 운영 DB가 아닌 다른 환경 DB에 테스트를 수행하면, 굳이 임베디드 DB를 띄울 필요가 없겠군요
운영에 영향을 안주다보니, 테스트 수행전 겹치는 데이터를 제거해도 무방할 것 같고요.
답변 주셔서 감사합니다 :)
RepositoryTest의 패키지 위치가 domain인 이유
0
30
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
30
1
update()에 사용하는 setter 질문드립니다.
0
47
1
SQL 중심적 개발의 문제점에 대한 질문
0
72
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
84
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
174
1
@repository 어노테이션
0
89
3
ItemService
0
58
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
54
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
178
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
77
1
@EventListener(ApplicationReadyEvent.class) 관련
0
88
1
트랜잭션 동기화 매니저와 데이터 소스
0
76
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
94
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
112
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
83
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
73
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
102
1
커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문
0
98
2

