Tengo una aplicación Spring-Boot donde las propiedades predeterminadas se establecen en un application.properties
archivo en el classpath (src / main / resources / application.properties).
Me gustaría anular algunas configuraciones predeterminadas en mi prueba JUnit con propiedades declaradas en un test.properties
archivo (src / test / resources / test.properties)
Normalmente tengo una clase de configuración dedicada para mis pruebas Junit, por ejemplo
package foo.bar.test;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
}
Primero pensé que usar @PropertySource("classpath:test.properties")
en la clase TestConfig haría el truco, pero estas propiedades no sobrescribirán la configuración de application.properties (ver Spring-Boot Reference Doc - 23. Configuración externalizada ).
Luego traté de usar -Dspring.config.location=classpath:test.properties
al invocar la prueba. Eso fue exitoso, pero no quiero establecer esta propiedad del sistema para cada ejecución de prueba. Así lo puse en el código
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
que desafortunadamente nuevamente no tuvo éxito.
Debe haber una solución simple sobre cómo anular la application.properties
configuración en las pruebas JUnit con la test.properties
que debo haber pasado por alto.