Gradle에서 특정 테스트만 골라 실행하는 방법 3가지

## Gradle에서 **특정 테스트만 골라 실행하는 방법** 3가지

네, 정확한 판단이십니다! **Spring REST Docs**는 비즈니스 로직(Service, Repository)보다는 **컨트롤러(Controller)의 인터페이스**를 검증하고 문서를 뽑아내는 것이 목적이죠.

전체 테스트를 다 돌리면 시간이 너무 오래 걸리니, Gradle에서 **특정 테스트만 골라 실행하는 방법** 3가지를 정리해 드립니다.

---

### 1. 명령어 한 줄로 특정 클래스만 실행 (가장 많이 씀)

터미널에서 `--tests` 옵션을 사용하면 아주 정교하게 필터링할 수 있습니다.

- **특정 컨트롤러 테스트만 실행:**Bash
    
    `./gradlew test --tests "*.UserControllerTest"`
    
- **특정 패키지 내의 모든 테스트 실행:**Bash
    
    `./gradlew test --tests "dev.ohhoonim.factory.api.*"`
    
- **특정 클래스의 특정 메서드 딱 하나만 실행:**Bash
    
    `./gradlew test --tests "*.UserControllerTest.create_user_성공"`
    

---

### 2. `build.gradle`에 필터 설정하기 (자주 쓰는 필터가 있을 때)

아예 특정 패키지나 이름 규칙을 가진 테스트만 수행하도록 `test` 태스크를 커스터마이징할 수 있습니다.

Gradle

`test {
    useJUnitPlatform()
    
    // 문서화용 컨트롤러 테스트만 실행하고 싶을 때 (예: 클래스명이 ControllerTest로 끝나는 경우)
    filter {
        includeTestsMatching "*ControllerTest"
        // excludeTestsMatching "*ServiceTest" // 제외하고 싶을 때
    }
}`

---

### 3. JUnit 5 `@Tag` 활용 (가장 세련된 방법)

테스트 코드에 태그를 달아두고, Gradle에게 "이 태그가 붙은 놈들만 돌려!"라고 시키는 방법입니다.

- **Java 코드:**Java
    
    `@Tag("restdocs")
    class UserControllerTest { ... }`
    
- **build.gradle:**Gradle
    
    `test {
        useJUnitPlatform {
            includeTags 'restdocs'
        }
    }`
    

---

### 💡 꿀팁: 문서 생성(Asciidoctor)과 연동하기

사용자님의 목적은 **"컨트롤러 테스트를 돌리고 -> 그 결과로 HTML 문서를 만든다"**는 흐름이죠? 특정 테스트만 돌리면서 문서까지 바로 뽑고 싶다면 이렇게 실행하세요.

Bash

`./gradlew test --tests "*Controller*" asciidoctor`

### ⚠️ 주의사항

`asciidoctor` 태스크는 보통 `dependsOn test` 설정이 되어 있습니다. 만약 `./gradlew asciidoctor`만 실행하면 **전체 테스트**가 다시 돌아가려고 할 겁니다. 이때도 `--tests` 옵션을 붙여주면 Gradle이 똑똑하게 **필터링된 테스트만 돌리고 문서를 생성**합니다.

댓글

이 블로그의 인기 게시물

Session 대신 JWT를 사용하는 이유

스프링 부트 개발자를 위한 유용한 VSCode 설정

osx 매버릭스에서 영문키 반복 입력되게 하기