Testcontainers를 이용한 애플리케이션 통합 테스트 환경 구축이 글에서는 Testcontainers를 활용하여 애플리케이션 통합 테스트 시 데이터베이스 환경을 어떻게 구성할 수 있는지에 대해 설명합니다.Testcontainers 공식 문서를 참고하여 현재 버전에 맞게 직접 테스트해보며 작성했습니다. 서론테스트 코드를 작성할 때, Docker를 사용해 테스트용 데이터베이스를 직접 띄우거나 H2 메모리 데이터베이스를 활용할 수 있습니다. 하지만 Docker로 테스트용 DB를 직접 실행하고 종료하는 과정은 번거로울 수 있으며, H2 메모리 DB는 설정이 간편하고 테스트 속도가 빠르지만 운영 환경과 다른 DB를 사용할 때 문제가 발생할 가능성이 있습니다. 이는 테스트에서 문제가 없더라도 실제 운영 환..
백엔드/Test
TDD란 Test Driven Development의 약자로 테스트 주도 개발이라고 합니다. 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다. TDD에 대해 알아보기 전에 전통적인 개발 방식은 코드를 어떤 순서로 작성하는지 TDD와 비교해 무엇이 다른지 알아봅시다. 전통적인 개발 방식(Traditional Development) 전통적인 개발 방식은 위와 같이 1. 애플리케이션 구상 → 2. 코드 작성 → 3. 테스트 코드 작성 순서로 애플리케이션을 개발합니다. 이미 코드를 먼저 작성하였기 때문에 여러 가지 많은 이유로 테스트 코드 작성을 하지 않거나 아예 작성하지 않는 경우도 많이 볼 수 있습니다. 이러한 흐름을 ..
단위 테스트는 일반적으로 실행 순서에 의존해서는 안 되지만 특정 상황에서 실행 순서를 적용해야 하는 경우가 있습니다. 예를 들어 테스트 순서가 중요한 통합 테스트나 기능 테스트를 작성해야 할 경우입니다. 먼저 간단한 테스트 코드를 작성하고 실행해 보겠습니다. 순서를 학습하기 위한 예제라 테스트 메서드 내용은 생략하겠습니다. public class OrderTest { @Test void 가_테스트() { } @Test void 나_테스트() { } @Test void 다_테스트() { } @Test void 라_테스트() { } @Test void 마_테스트() { } } 테스트 클래스에 작성된 순서로 나오지 않는다는 것과 가나다 순서도 아닌 것을 확인할 수 있습니다. 실제 Junit 공식 문서를 확인해..
테스트 코드를 작성하다 보면 각각 중복되는 작업이 많이 생깁니다. 예를 들면 각 테스트 전에 테스트 수행에 필요한 객체를 만들거나 테스트 데이터를 초기화하는 작업 등이 있습니다. JUnit은 이러한 중복 작업에 대해 편리하게 작업이 가능하도록 라이프 사이클 메서드 어노테이션을 제공합니다. @BeforeEach 테스트 메서드 전에 실행됩니다. 테스트 전에 필요한 객체를 생성하거나 테스트 데이터 설정에 자주 사용합니다. @AfterEach 테스트 메서드 후에 실행됩니다. 테스트 후에 테스트 데이터를 다시 초기화 하는 작업에 많이 사용됩니다. 실행 순서 다이어그램을 먼저 보여드리고 코드로 어노테이션 예시를 보여드리겠습니다. @BeforeEach를 어떤 상황에 적용 가능한지 코드를 통해 보여드리면 // @Bef..