최근 TDD를 기반으로 테스트 코드 작성에 대한 학습을 게을리하지 않고 있습니다. 여기서는 통합 테스트를 진행할 때, 스프링 컨텍스트가 실행되는 비용을 줄이는 방법을 소개합니다.
이번 글에서는 테스트의 독립성을 지키기 위해 테스트 케이스마다 Fixture를 만드는 것과 테스트 케이스마다 중복으로 발생하는 Fixture를 setUp 등으로 통합하는 것 중에서 어떤 방법을 사용해야 하는지에 대한 고민을 적어보았습니다.
이번 글에서는 오브젝트 마더 패턴을 활용하는 또 다른 방법 중 하나인 Enum에서 테스트 픽스처를 만들어 실제 테스트 케이스에 적용해보았습니다.
요즘 테스트 코드를 작성하는 재미가 쏠쏠합니다. 이번에는 Given-When-Then 방식과 더불어 Describe-Context-It 방식을 반영해 테스트 가독성을 향상시켜보았습니다.
실제 운영 DB로 구축된 테스트 환경을 Testcontainers(테스트 컨테이너)를 활용한 테스트 환경으로 전환해보았어요. 독립적인 컨테이너로 테스트를 수행하니 일일이 DB 생명주기의 의존을 덜었지만, 그에 따른 테스트 성능 이슈도 신경써야 하는 재미난 기술이었어요.
애플리케이션과 AWS S3와 강하게 결합된 구조를 추상화를 통해 의존성 흐름을 역전시키고 테스트 가능성을 높일 수 있는 구조로 개선하여 외부 의존성과 애플리케이션의 결합도를 낮출 수 있었던 과정을 이야기해보았습니다.
최근 여러 자료나 책을 살펴보던 중, 소프트웨어의 아키텍처 규칙을 테스트 코드로 검증하여 설계 품질을 보장할 수 있는 ArchUnit이라는 테스트 라이브러리를 알게 되어서 직접 적용해보았습니다.
핵심 비즈니스 로직에 대한 단위 테스트를 작성할 때 여러 테스트 더블(Test Doubles) 중에서 대중적으로 사용하는 Mock이나 Stub을 활용하지 않고 Fake 객체를 통해 가짜 객체를 주입하여 테스트하는 것을 간단히 소개합니다.