이 블로그는 제작중인 프로젝트에 대해서 테스트 코드가 필요한 부분과 필요하지 않은 부분에 대한 고찰을 정리한 블로그입니다.
1. 패키지 목록
- 여기서 어떤 패키지는 테스트 코드를 작성하고 어떤 패키지는 테스트 코드를 작성안해도 될까라는 고민이 들었습니다.
- 기본적으로 Controller, Service, DAO 패키지에 대한 내용은 Unit Test를 작성을 해야합니다.
- Config, utils, interceptor, exception 패키지에 대해서도 Unit Test와 통합테스트를 통해 테스트 코드 작성이 필요합니다.
- 다만, 저는 Query DSL을 사용중이라 QClass가 존재하고 data에서는 lombok을 사용하고 있습니다. 하지만 이 코드들은 테스트 코드의 필요성을 느끼지 못했습니다.
2. QClass, Lombok에 대한 테스트 코드는 필요없는가?
- 주관적인 견해로, 필요없다고 느껴집니다. 우선, Test Coverage를 사용하는 이유는 테스트가 필요한 부분에 대해 테스트 코드가 작성되지 않았다면 commit을 막는 방식입니다.
- "해당 부분에 대해 테스트 코드 작성시 커버리지가 저하된다"
- "QClass는 Entity를 토대로 생성하므로 Entity에 대한 테스트가 이루어진다면 굳이 작성할 필요가 없다"
- "Lombok 또한 기능에 대한 검증이 있다면 굳이 작성할 필요가 없다"
기본적으로, Lombok, QClass는 내가 작성한 코드가 아니기에 테스트 코드를 작성할 필요가 없다고 생각합니다. 다만, 기능에 대한 파악은 필요하다고 생각합니다.
3. 커버리지 평가에서 제거
커버리지는 Jacoco를 사용중입니다.
기본적으로는 아래와 같이 작성시 클래스나 패키지에 대한 테스트 커버리지를 피할 수 있습니다.
또한 QClass는 Q로 시작하기 때문에 아래와 같이 작성시 생략됩니다.
<excludes>
<exclude>**/AOP/*</exclude>
<exclude>**/interceptor/*</exclude>
<exclude>**/Listener/*</exclude>
<exclude>**/Q*.class</exclude>
<exclude>**/ReservationServer1Application.class</exclude>
</excludes>
Lombok에 대한 제거는 아래와 같습니다.
1. 프로젝트 최상단 경로 밑에 텍스트 파일 생성, 이름 lombok.config
2. lombok.addLombokGeneratedAnnotation = true 작성