JUnit 단위, 통합 테스트 분류 및 Gradle Task 설정하기

안녕하세요 gemini 입니다.

단위 테스트와 통합 테스트를 분류하고, 각 테스트 분류별 수행을 하기 위해 Gradle Task 를 설정하는 방법을 공유하려고 합니다.

제가 사용한 방법은 JUnit 의 @Category Annotation 을 이용하여 통합 테스트 구분을 위한 IntegrationTest.class 를 만들어 놓고, 이 클래스를 상속받은 Test 를 통합 테스트로 분류하였습니다.
또한 단순하게 상속을 받지 않은 Test 는 단위 테스트로 분류하였습니다.

우선 IntegrationTest.class 입니다.

실제 단위 테스트, 통합 테스트 작성 시에는 아래와 같이 작성을 합니다.

이렇게 하면 단위 테스트와 통합 테스트를 상속 여부를 통해 구분할 수 있게 됩니다.
이제 테스트 분류별 수행을 위해 Gradle Task 설정을 해보겠습니다.

build.gradle 의 Task 설정은 아래와 같이 구성됩니다.

Gradle Wrapper 를 통해서 Task 를 아래와 같이 수행 가능합니다.

$ gradlew test              // 단위 테스트만 수행
$ gradlew integrationTest // 통합 테스트만 수행
$ gradlew wholeTest // 단위+통합 테스트 수행

만약 Jenkins 를 사용하신다면 위의 Task 수행을 이용하여 커밋 시 단위 테스트 수행, 배포 시 통합 or 전체 테스트를 수행하도록 설정하실 수 있습니다.

또한 IntelliJ 의 Gradle Tab 에서도 아래와 같이 보이고 편하게 수행 가능합니다.

그러나 이 분류법은 굉장히 단순하여 현재 상황과 맞지 않거나 부족한 분류법일 수도 있습니다.

그런 경우에는 다른 설정 법과 조합하시면 해결하실 수 있을 것 같습니다.
아래는 예전에 제가 참고했던 링크입니다. 
참고하시면 더욱 상황에 맞게 설정하실 수 있을 것 같습니다.

https://moelholm.com/2016/10/22/spring-boot-separating-tests

미약한 내용이지만 한 분에게라도 도움이 되었으면 좋겠네요.

감사합니다^^~