테스트 환경 격리

최근 테스트 환경을 격리하는 문제에 대해 고민하고 있었다.

다음 테스트에 영향을 미치지 않으려면 테스트마다 생긴 사이드 이팩트를 제거해야한다.

본인은 아래처럼 매 테스트에서 DB에 데이터를 넣고 종료 시 DB 내용을 지워줬었다.

 

하지만 최근 @Transactional 테스트를 알게 된 후 몇몇 주의점이 있지만 @Transactional 테스트가 편하긴 하니

주의해야할 점만 생각해보고 그냥 @Transactional 테스트를 써야할지에 대한 고민과,

이렇게 매 테스트마다 DB에 데이터를 넣어주는게 맞을까 라는 생각이 들었다.

특히 연관관계 때문에 연관 된 엔티티가 늘어날 수록 given 절에 해당하는 테스트 사전 작업이 너무 번거로워졌다.

 

그러던 중 IDIOT-s의 한 개발자 분께 여쭤보니 Repository를 Mocking 해서 사용한다는 이야기를 들었다.

처음 테스트 코드를 작성할 때는 Repository나 Service 레이어는 Mocking 하지 않는게 좋다고 생각했지만,

점점 그 방법 또한 나쁘지 않을 수 있다는 생각이 들었다.

좋은 테스트의 조건인 빠른 테스트에 부합되기도 하고 연관된 엔티티가 늘어나면 이런저런 번거로운 작업이 줄어들지 않을까?

이런건 아무래도 팀바팀일 확률이 높아 보이는데 현업에서는 어떻게 다룰지 궁금하다.

이에 관해서는 좀 더 공부해보고 이것저것 시도해보고 좋은 방법을 찾아봐야겠다.

+ Recent posts