테스트코드2 Spring 테스트에서 @Transactional과 비관적 락 사용 시 주의점 오늘은 Spring 테스트 코드를 통해서 방 입장 동시성 문제를 해결한 비관적 락 코드를 테스트하면서 발생한 문제에 대해서 다뤄보겠습니다.문제 상황Spring에서 데이터베이스 테스트를 작성할 때, 우리는 종종 @Transactional 어노테이션을 사용합니다. 이 어노테이션은 각 테스트 메서드를 하나의 트랜잭션으로 감싸고, 테스트가 끝나면 자동으로 롤백 하여 데이터베이스를 초기 상태로 되돌립니다.이번 테스트에서는 비관적 락을 통해 5명 제한인 방에 10명이 동시에 입장을 시도하면 5명이 방에 참여를 하고 5명은 참여하지 못하는 것을 테스트 시나리오로 수립하였습니다. 그러나 생각했던 시나리오와는 달리 계속해서 lock timeout이 발생하였습니다. 원인을 파악하기전에 작성한 코드를 먼저 살펴보겠습니다... 2024. 10. 14. [책 리뷰] 자바와 JUnit을 활용한 실용주의 단위 테스트 - 제프 랭어, 앤디 헌트, 데이브 토마스 들어가면서 우테코 6기 프리코스를 참여하면서 더 깊이있는 테스트 코드를 짜기 위해서 구매한 서적이다. 이 책을 읽으면서 테스트코드를 제대로 작성하는 방법에 대해서 배울 수 있었다. 좋았던 점 기존의 나는 코드를 작성해도 코드에 자신감이 없었던 경우가 굉장히 많다. 이 책을 읽으면서 그동안 내가 코드에 자신감이 없었던 이유는 제대로 된 테스트 코드를 작성하지 않아서 임을 깨닫게 해주었다. 이 책에서는 단위 테스트를 작성해야 하는 이유, AAA나 Given When Then 패턴을 통해서 테스트 일관성을 유지할 수 있는 방법 그리고 @Before이나 @After 애너테이션을 통해서 테스트 코드를 리팩토링하는 방법, 좋은 테스트가 가지는 속성인 FIRST , 경계조건 CORRECT 등등 테스트 코드를 작성하.. 2023. 12. 20. 이전 1 다음