상세 컨텐츠

본문 제목

1/3 테스트코드 동시성 문제

카테고리 없음

by 화2팅 2024. 1. 3. 10:13

본문

 

테스트를 클래스별로 따로 실행하는것이 아니라 그림과같이 테스트코드를 전체한번에 실행했을때 DB관련해서 문제가 생기는것이 테스트코드 동시성 문제이다.

 

 

문제가 생기는 원인은 다음과같다. 

 

 

다음그림과같이 @Autowired로 Repository를 주입받는 테스트 클래스가 여러개이고 이 테스트클래스가 한번에 실행됐을때 이들은 같은 DB를 공유하는것이다.

 

물론 테스트에 @Transactional이 걸리거나 수동으로 DB를 delete하여 비워줄수있지만 DB의 id값까지 초기화되지는못하고 1씩 늘어나는것이다.

 

(id1번의 데이터가 @Transactional로 초기화되어 지워져도 다음에 오는 데이터의 id값은 2가 되는것이다.)

 

CI/CD중 CI부분에서 테스트코드를 체크하는부분을 쓰는경우가 있는데 이때 테스트코드를 한번에 실행시키기때문에 이를 위해서는 동시성문제를 해결해줘야한다. 

 

따라서 테스트코드를 따로따로 실행해서 통과하는것만보지말고 한번에 실행시켜서 통과하는것까지 봐야한다