Я настроил интеграционные тесты с Gradle и хочу использовать «наследование свойств» Spring . Но application.properties
из main
полностью заменяется.
Структура каталогов:
src/
intTest/
kotlin/my/package/
SomethingTest.kt
resources/
application.properties
main/
kotlin/my/package/
Something.kt
resources/
application.properties
Причиной может быть то, что я использую application.properties
(с тем же именем файла) в intTest
и в каталоге main
. Однако, если я использую профиль, давайте назовем его «intTest» и файлом с именем application-intTest.properties
, он тоже не будет работать. Файл, специфичный для профиля, вообще не берется.
Конфигурация Gradle:
sourceSets {
intTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
configurations {
intTestImplementation.extendsFrom testImplementation
intTestRuntimeOnly.extendsFrom runtimeOnly
}
task integrationTest(type: Test) {
description = 'Runs integration tests.'
group = 'verification'
useJUnitPlatform()
systemProperty 'spring.profiles.active', 'intTest'
testClassesDirs = sourceSets.intTest.output.classesDirs
classpath = sourceSets.intTest.runtimeClasspath
shouldRunAfter test
}
check.dependsOn integrationTest
Тестовый класс (основанный на JUnit 5) помечается:
@ExtendWith(SpringExtension::class)
@ComponentScan
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
Если я добавлю @TestPropertySource
в свой тестовый класс, файл свойств будет по крайней мере подобран:
@TestPropertySource(locations= ["classpath:application-intTest.properties"])
Но «наследование свойств» тоже не работает. Так что это в основном то же самое, что и использование application.properties
(без части профиля), что переопределяет все свойства из main
.
Добавление @Profile("intTest")
в мой тест не решает проблему. То же самое относится к @ActiveProfiles("intTest")
.
Как я могу использовать "наследование свойств" с моей настройкой интеграционного теста?