# 테스트 자동화 소프트웨어 개발에서 테스트 자동화는 필수적인 요소다. 코드가 변경될 때마다 수동으로 모든 기능을 점검하는 것은 비효율적이며, 오류가 발생할 확률도 높아진다. 이를 해결하기 위해 테스트 자동화를 도입하면, 코드를 변경할 때마다 빠르게 테스트를 실행하고 안정성을 보장할 수 있다. Gradle은 테스트를 자동화하는 강력한 기능을 제공하며, JUnit, TestNG, Spock 등 다양한 테스트 프레임워크와 함께 사용할 수 있다. ## Gradle에서 테스트란? 테스트는 코드가 기대한 대로 동작하는지 확인하는 과정이다. 일반적으로 테스트는 다음과 같이 분류할 수 있다. - **단위 테스트(Unit Test)**: 개별 모듈이나 함수의 동작을 검증 - **통합 테스트(Integration Test)**: 여러 모듈이 올바르게 연동되는지 확인 - **기능 테스트(Functional Test)**: 실제 사용자 시나리오를 검증 ## Gradle에서 테스트 실행하기 Gradle은 기본적으로 `test` 태스크를 제공하며, 이를 통해 자동으로 테스트를 실행할 수 있다. 터미널에서 다음 명령어를 실행하면 테스트가 자동으로 실행된다. ```sh ./gradlew test ``` 테스트 실행이 완료되면 결과는 `build/reports/tests/test/index.html` 파일에서 확인할 수 있다. ## 테스트 프레임워크 설정 Gradle에서는 다양한 테스트 프레임워크를 지원한다. ### JUnit 5 설정 JUnit 5를 사용하려면 `dependencies` 블록에 다음과 같이 추가한다. ```kotlin dependencies { testImplementation("org.junit.jupiter:junit-jupiter:5.9.2") } ``` ## 테스트 태스크 설정 Gradle에서 테스트 태스크를 커스터마이징할 수도 있다. ### 특정 패키지의 테스트만 실행하기 다음과 같이 `include`를 설정하면 특정 패키지만 테스트할 수 있다. ```kotlin tasks.test { include("com/example/tests/**") } ``` 반대로, 특정 테스트를 제외할 수도 있다. ```kotlin tasks.test { exclude("com/example/experimental/**") } ``` ### 테스트 병렬 실행 테스트 실행 속도를 높이기 위해 병렬 실행을 활성화할 수도 있다. ```kotlin tasks.test { maxParallelForks = 2 } ``` ## 테스트 리포트 생성 Gradle은 기본적으로 테스트 결과를 HTML 보고서로 제공한다. 추가적으로 `jacoco` 플러그인을 사용하면 코드 커버리지도 확인할 수 있다. ### JaCoCo 플러그인 설정 ```kotlin plugins { id("jacoco") } tasks.jacocoTestReport { reports { xml.required.set(true) html.required.set(true) } } ``` 테스트 실행 후 다음 명령어를 입력하면 코드 커버리지를 확인할 수 있다. ```sh .gradlew jacocoTestReport ``` 결과는 `build/reports/jacoco/test/html/index.html`에서 확인할 수 있다.