본문 바로가기

Programing/JVM(Java, Kotlin)

Spock Framework 프로젝트에 추가하기

jUnit이 유명하지만 사용하기에는 Spock Framework이 더 편한 것 같다.


src 하위에 main과 test가 있고, test 밑에 java가 있을 것이다. test 밑에 groovy 디렉토리를 추가한다.


groovy 디렉토리가 그냥 회색인데 녹색이 되어야 테스트 디렉토리라고 IDE가 인식이 된 것이다.

아래 build.gradle 파일에서 apply plugin: 'groovy' 를 추가하면 녹색으로 바뀔 것이다.


build.gradle 파일

apply plugin: 'groovy'

dependencies {
testCompile ("org.spockframework:spock-core:1.1-groovy-2.4") {
exclude module: "groovy-all"
}
}

2018-10-02 현재 최신버전은 1.2-groovy-2.5 인데, 그루비 버전 때문인지 이 버전을 적용하면 아래와 같이 NoClassDefFoundError이 발생한다.

이것은 스프링 부트의 문제로 보이는데  https://stackoverflow.com/questions/50681096/groovy-2-5-0-gives-noclassdeffounderror-for-methodcalltransformation 를 보면 groovy.version 변수를 2.5로 설정을 해서 해결을 할 수 있다고 한다.


spock-core에서 exclude 시킨 이유는 스프링 부트에서 spock-core가 groovy-all을 가져오게 되면 아래와 같은 경고가 보이게 된다.

Spring Boot 1.2.x の Web アプリを 1.3.x へバージョンアップする ( その3 )( build.gradle 修正後の Rebuild で出た Warning を解消する ) 참고(일본어임)



간혹 녹색으로 되지 않는 경우가 있는데 sourceSets의 단위 테스트 경로를 직접 지정을 해준다.


build.gradle 파일

apply plugin: 'groovy'

sourceSets {
unitTest {
groovy.srcDirs = [file('src/test/groovy')]
}
}

dependencies {

간혹 녹색으로 되지 않는 경우가 있는데 sourceSets의 단위 테스트 경로를 직접 지정을 해준다


재정리 build.grade

apply plugin: 'groovy'
ext['groovy.version'] = '2.5.0'


dependencies {
testCompile ("org.spockframework:spock-core:1.2-groovy-2.5") {
exclude module: "groovy-all"
}