2024년에 진행한 K-해커톤 12에서 자바와 스프링을 활용하여 프로젝트를 진행했습니다. 짧은 강의만 듣고 대부분 구글링을 통해 문제를 해결했기 때문에 아직 부족한 부분이 많다는 생각이 들었습니다. 그래서 스프링 공부를 시작하였습니다.
이전에 한 번 들었던 강의였지만, 프로젝트를 경험한 후 다시 들으니 이해가 더 잘 되는 것 같습니다. 실제로 코드를 작성하면서 배우는 것이 얼마나 중요한지를 깨달았습니다.
TTD(Test Driven Development)
TTD란 테스트 주도 개발로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복해 구현하는 소프트웨어 방범론이다.
각각의 테스트는 독립적으로 실행되어야 한다.
이 테스트들을 한번에 실행하였더니 에러가 떴다.
테스트는 각각 독립적으로 실행되어야 하는데, findAll()이 가장 먼저 실행되고 그 이후에 findByName() 함수가 실행되었다.
이미 findAll()에서 spring1, spring2가 저장되었기 때문이다.
이럴 때 사용하는 것이 @AfterEach이다.
한 번에 여러 테스트를 실행하면 테스트 DB에 직전 테스트의 결과가 남을 수 있다.
그러면 지금처럼 테스트가 실패할 가능성이 생기는 것이다.
@AfterEach를 사용하면 각 테스트가 종료될 때마다 이 기능을 실행한다.
데이터를 초기화하는 코드를 추가한 후
@AfterEach를 사용해 메모리 DB에 저장된 데이터를 삭제했다.
테스트가 성공적으로 실행된 모습을 볼 수 있다.
@Transactional
테스트케이스에 이 애노테이션이 있으면, 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백한다. 이렇게 하면 DB에 데이터가 남지 않아 다음 테스트에 영향을 주지 않는다.
'Spring Study' 카테고리의 다른 글
[스프링 핵심 원리] - 기본편 #4 (1) | 2025.03.14 |
---|---|
[스프링 핵심 원리] - 기본편 #3 (0) | 2025.03.11 |
[스프링 핵심 원리] - 기본편 #2 (0) | 2025.03.09 |
[스프링 핵심 원리] - 기본편 #1 (1) | 2025.03.02 |
[스프링 입문] -코드로 배우는 스프링 부트 # 2 (0) | 2025.02.19 |