제목: "[java] Gradle 및 -D를 통해 내 테스트에 시스템 속성을 제공하는 방법"
작성자: daplus.net
작성자 수정일:
링크: http://daplus.net/java-gradle-%EB%B0%8F-d%EB%A5%BC-%ED%86%B5%ED%95%B4-%EB%82%B4-%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%97%90-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%86%8D%EC%84%B1%EC%9D%84-%EC%A0%9C%EA%B3%B5%ED%95%98%EB%8A%94/
작성일: 2022년7월9일
-D)
를 사용한다. CI 툴에서 빌드하기 전에 그래들 테스트를(./gradlew --info test
) 돌리는데 테스트를 실패하길래 에러 로그를 봤더니, 변수에 @Value
주입이 안된다는 메시지가 나왔다.-D
를 추가하여서 테스트를 진행하였는데, 그래도 @Value
에 값을 못읽어온다.그래서 gradle 파일에서 따로 설정을 해줘야 한다.
test{
systemProperty "youtube.api.key", project.getProperty("youtube.api.key")
}
systemProperty "youtube.api.key", System.getProperty("youtube.api.key")
task integrationTest(type: Test) {
useTestNG()
options {
systemProperties(System.getProperties())
}
}
task integrationTest(type: Test) {
// ... Do stuff here ...
systemProperties System.getProperties().subMap(['PROP1', 'PROP2'])
}
위 방법에서 gradle의 JVM에 존재하는 경우에만 PROP1,PROP2가 전달된다.