Я начал использовать Spring Cloud Contracts ('2.0.2.RELEASE') в моем проекте, и у меня следующая структура
src
|
-- main
-- test
-- integrationTest
-- contractTest
Когда я проверял свои контракты и базовый тестовый класс, он работал нормально. Я хочу переместить тесты контракта, которые я написал, в отдельный набор источников, источники contractTest. Однако это не сработает, так как задача плагина generateContractTests
все равно будет выглядеть в тестовом наборе исходных кодов при попытке запуска.
Я внес следующие изменения в мой файл Gradle
task contractTest(type: Test) {
description = 'Runs contract tests.'
group = 'verification'
testClassesDirs = sourceSets.contractTest.output.classesDirs
classpath = sourceSets.contractTest.runtimeClasspath
shouldRunAfter integrationTest
}
configurations {
contractTestImplementation.extendsFrom implementation
contractTestRuntimeOnly.extendsFrom runtimeOnly
}
sourceSets {
contractTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
contracts {
// testFramework = 'JUNIT5'
packageWithBaseClasses = 'com.test.testapi.contracts'
contractsDslDir = new File("${project.rootDir}/src/contractTest/resources/contracts/")
}
contractTestImplementation 'org.codehaus.groovy:groovy-all:2.4.6'
contractTestImplementation 'org.springframework.cloud:spring-cloud-starter-contract-verifier'
contractTestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api'
contractTestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine'
Я думаю, мне нужно установить свойство плагина контракта contractDependency
, однако я не уверен и не могу найти пример, чтобы плагин работал с этим другим набором исходных кодов
TLDR; Я хочу, чтобы мои контрактные тесты можно было запускать в другой папке
ОБНОВЛЕНИЕ - я не уверен, но я думаю, что это невозможно, как в плагине Gradle в файле " GenerateServerTestsTask.groovy ", который может указывать на то, что sourceSet жестко задан для тест по всему коду
project.sourceSets.test.groovy {
project.logger.
info("Registering ${getConfigProperties().generatedTestSourcesDir} as test source directory")
srcDir getConfigProperties().getGeneratedTestSourcesDir()
}