본문 바로가기
dev/kotlin

Gradle JUnit 5 Tag

by igooo 2024. 11. 3.
728x90

Kotlin, Rest-assured 조합으로 통합 테스트 작성 시 JUnit 5에 @Tag 어노테이션을 사용하여 Test를 필터링한다.

 

JUnit 5 Tag

@Tag 어노테이션을 클래스 또는 메서드 수준에서 테스트를 필터링 할 수 있는 기능이다.

Used to declare tags for filtering tests, either at the class or method level; analogous to test groups in TestNG or Categories in JUnit 4. Such annotations are inherited at the class level but not at the method level.

참고 : https://junit.org/junit5/docs/current/user-guide/

 

 

Example

통합 테스트를 작성하다보면 개발중인 API와 실제 서비수 중인 API에 대하여 통합 테스트를 작성 할 수 있다. Kotlin Rest-assured를 사용하여 테스트 코드를 작성하면 아래와 같이 작성 할 수 있다.

@Tag("Production")
class ProductionApiTest {
    @Test
    fun api() {
        Given {
        	queryParam("param", "test")
            
            contentType(ContentType.JSON)
            header("Authorization", "Header value"
            log().uri()
        } When {
            get("{production test url}")
        } Then {
            statudCode(200)
            contentType(ContentType.JSON)
            body("status", "OK")
            log().body()
        }
    }
}

 

보통은 package를 구분하여 서비스중인 API와 개발 중인 API에 대한 테스트 코드를 작성하고 Jenkins 등을 통하여 망별로 테스트를 별도로 실행한다. maven의 경우 실행 옵션에서 Tag에 사용할 값을 정의 하여 실행 할 수 있지만 Gradle에서는 별도의 설정으로 Tag옵션을 지정하여 필터링을 수핸한다.

 

build.gradle.kts

plugins {
	......
}

dependencies {
    ......
}

task.withType<Test> {
    useJunitPlatform()
}

task.register<Test>("productionTest") {
    useJunitPlatform() {
        includeTags("production")
    }
}

task.register<Test>("developTest") {
    useJunitPlatform() {
        includeTags("develop")
    }
}

 

테스트 코드로 작성한 @Tag에 값을 Gradle에 정의해주고 Gradle로 테스트 실행 시 아래와 같이 실행할 테스트 Tag 명을 명시해주면 해당 Tag의 테스트만 수행하게 된다.

$> gradlew clean productionTest

 

 

'dev > kotlin' 카테고리의 다른 글

[Kotlin] REST Assured로 통합 테스트 작성하기  (2) 2024.09.25