강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ykm8864님의 프로필 이미지
ykm8864

작성한 질문수

Spring Boot TDD - 입문부터 실전까지 정확하게

시스템의 상태

임의데이터 generator방식과 @Transactional에 대한 고찰

작성

·

3

0

안녕하세요, 강사님. TDD 관련 강의 항상 잘 듣고 있습니다.

강의 내용을 따라 실습을 진행하던 중, 테스트 격리 전략에 대해 궁금한 점이 생겨 질문 남깁니다.

 

# 강의에서 다뤄주신 상황

강의에서처럼 여러 테스트 메서드에서 동일한 이메일 값을 사용하니, 테스트 클래스 전체를 실행했을 때 JPA의 유니크 제약 조건 위반 에러가 발생했습니다. 이로 인해 개별 테스트는 성공하지만 전체 테스트는 실패하는 상황에서 궁금증이 생겼습니다.

 

# 제가 먼저 생각한 해결책: @Transactional을 이용한 롤백

저는 강의를 들여면서 이 문제를 해결하기 위해, 각 테스트 메서드에 @Transactional 애너테이션을 붙여 테스트가 끝나면 자동으로 롤백시키는 방식을 먼저 떠올렸습니다. 이 방법으로 각 테스트가 독립적인 트랜잭션 내에서 실행되고, DB 상태를 다음 테스트에 영향을 주지 않는 상태로 유지할 수 있다고 생각했습니다.

 

##강사님의 방식(임의 데이터 generator)에 대한 질문##

그런데 강사님께서는 강의에서 롤백 방식을 사용하지 않으시고, UUID 등을 활용해 매번 고유한 이메일 주소를 생성해주는 데이터 제너레이터 방식을 사용하셨습니다. 강의에서도@Transactional 을 성능 등 여러가지 이유로 인해 사용하지 않았다고 하셨는데요.

@Transactional을 이용한 롤백 방식도 충분히 좋은 해결책이라고 생각했는데, 강사님께서 UUID 생성 방식을 선택하신 특별한 이유나 설계 철학이 궁금합니다.

혹시 제가 생각한 롤백 방식에 비해 UUID 생성 방식이 갖는 실용적인 장점(ex. 롤백을 하지 않으니 디버깅의 용이성(?))이 있을까요?

두 방식의 장단점과 어떤 상황에서 어떤 전략을 선택하는 것이 실무에서 더 좋을지에 대한 강사님의 고견을 듣고 싶습니다.

 

감사합니다!

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
ykm8864님의 프로필 이미지
ykm8864

작성한 질문수

질문하기