Dodanie dodatkowego zestawu testów do Gradle
Próbuję dodać Gradle (1.4) do istniejącego projektu, który ma wiele zestawów testów. Standardowy test jednostki umieszczony wsrc/test/java
uruchomione pomyślnie, ale mam problem z ustawieniem zadania do uruchomienia testu JUnitsrc/integration-test/java
.
Kiedy uciekamgradle intTest
Dostaję kilkacannot find symbol
błędy dla klas wsrc/main
. To prowadzi mnie do przekonania, że zależności nie są ustawione poprawnie. Jak skonfigurowaćintTest
tak, aby uruchomić moje testy integracyjne JUnit?
build.gradle
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
sourceSets {
integration {
java {
srcDir 'src/integration-test/java'
}
resources {
srcDir 'src/integration-test/resources'
}
}
}
dependencies {
compile(group: 'org.springframework', name: 'spring', version: '3.0.7')
testCompile(group: 'junit', name: 'junit', version: '4.+')
testCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
testCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
testCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
integrationCompile(group: 'junit', name: 'junit', version: '4.+')
integrationCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
integrationCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
integrationCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
}
task intTest(type: Test) {
testClassesDir = sourceSets.integration.output.classesDir
classpath += sourceSets.integration.runtimeClasspath
}
Detale: Gradle 1.4
Rozwiązanie: Nie ustawiłem ścieżki klasy kompilacji dla zestawu źródłowego testu integracji (patrz poniżej). W moim kodzie I ustawiam ścieżkę klasy kompilacji nasourceSets.test.runtimeClasspath
więc nie mam zduplikowanych zależności dla „integrationCompile”
sourceSets {
integrationTest {
java {
srcDir 'src/integration-test/java'
}
resources {
srcDir 'src/integration-test/resources'
}
compileClasspath += sourceSets.main.runtimeClasspath
}
}