Cómo anular application.properties prueba de integración en la primavera de arranque?

deamon:

He creado pruebas de integración con Gradle y quiero usar "la herencia de propiedades" de la primavera . Pero el application.propertiesde mainqueda completamente reemplazado.

Estructura de directorios:

src/
  intTest/
    kotlin/my/package/
      SomethingTest.kt
    resources/
      application.properties
  main/
    kotlin/my/package/
      Something.kt
    resources/
      application.properties

La razón podría ser que estoy usando application.properties(con el mismo nombre de archivo) en el intTest y en el maindirectorio. Sin embargo, si estoy usando un perfil, vamos a llamarlo "intTest" y un archivo llamado application-intTest.properties, no funciona bien. El archivo de perfil específico no es recogido en absoluto.

config 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

La clase de prueba (basado en JUnit 5) se anota con:

@ExtendWith(SpringExtension::class)
@ComponentScan
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)

Si añado @TestPropertySourcea mi clase de prueba del archivo de propiedades se recogió al menos:

@TestPropertySource(locations= ["classpath:application-intTest.properties"])

Pero la "herencia propiedades" no funciona bien. Por lo que es básicamente lo mismo que usar application.properties(sin una parte de perfil), lo que anula todas las propiedades de main.

Añadiendo @Profile("intTest")a mi prueba no resuelve el problema. Lo mismo se aplica para @ActiveProfiles("intTest").

¿Cómo puedo usar "propiedades de herencia" con mi configuración de la prueba de integración?

deamon:

Resultó que el problema no era mi config Gradle pero mi config IntelliJ. El perfil activo tiene que ser establecido en la configuración de ejecución - a saber, para todos y cada configuración de ejecución en la carpeta de prueba de integración. Esto se puede resolver mediante la anotación de las clases de prueba con la integración @ActiveProfiles("intTest").

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=203403&siteId=1
Recomendado
Clasificación