You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
기존엔 인수 테스트를 작성했습니다.
하지만, 인수 테스트는 "소프트웨어 인수를 목적으로 하는 테스트이다. 소프트웨어를 인수하기 전에 명세한 요구사항(인수 조건)대로 잘 작동하는지 검증이 필요하다." (출처: Tecoble - 단위 테스트 vs 통합 테스트 vs 인수 테스트) 입니다.
기존 인수 테스트를 작성한 이유는, 소프트웨어 인수의 목적보다는 통합 테스트의 목적에 가까웠습니다.
하지만 일반적인 통합 테스트에 비해 테스트 속도가 1.5배에서 2배 정도 더 걸렸습니다.
또한, RestAssured의 요청은 테스트 컨텍스트의 스레드와 별개로 실행되기 때문에, DB 격리를 위해 직접 truncate 쿼리를 실행해줘야 했습니다.
반면, Application Layer - Repository Layer 통합 테스트를 수행하면 직접 메서드를 호출할 수 있어 상대적으로 테스트 코드 작성이 용이해지고 반드시 API를 호출해야 하는 제약 조건이 사라져 테스트가 편리해집니다. 속도 또한 최대 2배 가까이 빠르게 실행됩니다.
또, @Transactional 어노테이션을 활용하여 DB 격리를 위한 비용이 감소합니다.
따라서 인수 테스트를 통합 테스트로 마이그레이션 하는 작업을 진행합니다!
진행 방식
기존의 인수 테스트는 일단 두고, 통합 테스트로 작성이 완료된 테스트 케이스는 삭제하는 식으로 차츰차츰 진행합니다.
참고
통합 테스트에서 프레젠테이션 계층을 제외한 이유는, @WebMvcTest를 이용해 프레젠테이션 계층을 슬라이스 테스트하는 것이 효율적이라 판단했기 때문입니다.
2024. 09. 29. dev 브랜치 기준, 전체 테스트 실행 시간:
The text was updated successfully, but these errors were encountered:
Description
기존엔 인수 테스트를 작성했습니다.
하지만, 인수 테스트는 "소프트웨어 인수를 목적으로 하는 테스트이다. 소프트웨어를 인수하기 전에 명세한 요구사항(인수 조건)대로 잘 작동하는지 검증이 필요하다." (출처: Tecoble - 단위 테스트 vs 통합 테스트 vs 인수 테스트) 입니다.
기존 인수 테스트를 작성한 이유는, 소프트웨어 인수의 목적보다는 통합 테스트의 목적에 가까웠습니다.
하지만 일반적인 통합 테스트에 비해 테스트 속도가 1.5배에서 2배 정도 더 걸렸습니다.
또한, RestAssured의 요청은 테스트 컨텍스트의 스레드와 별개로 실행되기 때문에, DB 격리를 위해 직접
truncate
쿼리를 실행해줘야 했습니다.반면, Application Layer - Repository Layer 통합 테스트를 수행하면 직접 메서드를 호출할 수 있어 상대적으로 테스트 코드 작성이 용이해지고 반드시 API를 호출해야 하는 제약 조건이 사라져 테스트가 편리해집니다. 속도 또한 최대 2배 가까이 빠르게 실행됩니다.
또,
@Transactional
어노테이션을 활용하여 DB 격리를 위한 비용이 감소합니다.따라서 인수 테스트를 통합 테스트로 마이그레이션 하는 작업을 진행합니다!
진행 방식
기존의 인수 테스트는 일단 두고, 통합 테스트로 작성이 완료된 테스트 케이스는 삭제하는 식으로 차츰차츰 진행합니다.
참고
@WebMvcTest
를 이용해 프레젠테이션 계층을 슬라이스 테스트하는 것이 효율적이라 판단했기 때문입니다.The text was updated successfully, but these errors were encountered: