본문 바로가기

tdd4

[TDD] 효율적인 TestFixture 관리 지난 회고에서 TestFixture에 대해 알게 되었고, 팀원들 모두 java-text-fixtures를 활용할 수있도록 gg-utils에 TestFixture를 생성하기로 결정했다. 추가적으로 현제 프로젝트에서 TestDataUtils라는 오직 하나의 클래스로 TestFixture를 모두 관리하고 있다는 문제점을 알게되었고, TestFixture 관련 논의에 이어서 추가적으로 어떻게 TestFixture를 효율적으로 관리할 수 있을지 논의했다. 먼저 현재 사용되고 있는 TestDataUtils의 가장 큰 문제점은 어떤 엔티티를 어디서 생성하는지, 즉 어떤 메서드가 존재하는지 파악하기 어렵다는 것이었다. 따라서 이를 해결하기 위해 먼저 TestDataUtils 분리해야한다. gg-utils├── buil.. 2024. 7. 22.
[TDD] UpdateDto와 TestFixture 42GG 프로젝트UpdateDto를 nullable 처리어제에 이어서 관리자 엔티티 업데이트 기능을 구현하다가 모든 필드를 @NotNull로 처리하기로 결정해서, NULL 예외처리를 하지 않고 진행중이었다. 하지만 테스트 코드를 작성하면서 결국 UpdateDto의 필드는 Nullable하게 처리하는게 좋을 것 같다는 결론을 내렸다. NULL 예외처리를 하지 않으면서 발생한 가장 큰 문제는 TestFixture를 구성할 때 DTO의 모든 컬럼에 대해 NULL이 아닌 실제 값을 넣어야한다는 것이다. public void updateLocation(Location location, List teams) { boolean conflictAgendaLocation = teams.stream().map(Age.. 2024. 7. 18.
[TDD] Service 계층 통합 테스트 이 글은 NestJS를 사용하면서 Service 계층 통합 테스트에 대한 고민을 다룬 글입니다.아직 이해가 부족한 부분이 많기 때문에 더 좋은 방향을 알려주시면 큰 도움이 될 것 같습니다. 한 줄 요약SQLite In-memory DB를 활용한 통합 테스트를 진행하기로 결정했습니다.Github Action을 활용한 e2e 테스트에서 실제 배포 환경과 동일하게 구성하여 진행하고,필요시 Testcontainers를 도입하거나 단위테스트로 분리하는 리펙토링을 진행하기로 결정했습니다. Service 계층 테스트 문제점처음 테스트를 작성할 때, 모든 의존성을 Mock/Stub를 사용해서 단위 테스트를 작성하는 방식으로 접근했습니다.하지만 현재 비즈니스 로직은 단위 테스트를 진행할 만큼 복잡하지 않았고, Jest에.. 2024. 2. 25.
[TDD] TDD와 Github action 도입 한 줄 요약현재까지의 개발 프로세스에 문제점을 느끼고 해결 방안으로 TDD를 도입하기로 결정했습니다. 테스트를 자동화하기 위해 github action workflows를 추가했으며, 런타임 환경이 추가됨에 따라서 환경변수를 정의하는 .env 파일을 분리했습니다. TDD 도입Github action workflows 추가OS: ubuntu-22.04DB: mysql 8.0.35 (default)Engine: Node.js 20.11.0Test: Jest ^29.5.0환경변수(.env) 분리.env.prod: 프로덕션 환경.env.local: 로컬 개발 환경secrets.ENV_TEST: github action 테스트 환경 개발 프로세스 문제점1. 지금 API 테스트 가능한가요? 프론트와 협업을 진행하면.. 2024. 2. 5.