회고

20220706 TIL #테스트코드 리펙토링 @DataJpaTest @SpringBootTest

paran21 2022. 7. 8. 00:16

프로젝트에서 추가되거나 변경된 기능이 많다보니 사용하지 않는 변수나 메소드, enum이 많아졌다.

아직 어떤 맥락인지 파악이 가능할 때 정리하는 게 좋을 것 같아서 틈틈히 수정하고 있다.

 

비즈니스 로직을 수정하다보면 테스트코드도 수정이 필요할 때가 있어서 같이 보게 되는데, 테스트코드에도 삭제하고 치워야 할 흔적들이 많이 남아있었다.

 

특히 테스트코드에서 TestBase 클래스를 만들어서 공통으로 사용하는 클래스를 주입하거나 설정들을 동일하게 사용하는 경우들이 있었는데, 계속 새로 추가되면서 비슷한 TestBase 클래스가 여러 개 생긴 것을 확인할 수 있었다.

 

현재 프로젝트에서 단위테스트와 통합테스트를 하고 있는데, 통합테스트의 경우에는 @DataJpaTest를 사용하는 경우도 있고, @SpringBootTest를 사용하는 경우도 있다.

단순히 Repository에 있는 Jpa 메서드나 QueryDsl을 테스트하는 경우에는 @DataJpaTest로 충분할 것 같고,

DB커넥션을 포함해서 서비스 단위의 통합테스트가 필요한 경우에는 @SpringBootTest를 사용했다.

 

TestBase도 UnitTest와 IntegrationTest, RepositoryTest로 각각 만들어서 설정과 관련된 어노테이션은 한 곳에서 처리해주었고, 공통으로 사용하는 클래스들만 TestBase에서 주입하고 나머지는 각각 테스트 클래스에서 주입(혹은 선언)하였다.

 

이렇게 하면 설정을 한 곳에서 관리할 수 있어서 좋은 것 같다.