Eu tenho um aplicativo Spring-Boot em que as propriedades padrão são definidas em um application.properties
arquivo no caminho de classe (src / main / resources / application.properties).
Gostaria de substituir algumas configurações padrão no meu teste JUnit por propriedades declaradas em um test.properties
arquivo (src / test / resources / test.properties)
Normalmente, tenho uma classe de configuração dedicada para meus testes Junit, por exemplo
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 {
}
Primeiro pensei que o uso @PropertySource("classpath:test.properties")
na classe TestConfig faria o truque, mas essas propriedades não substituirão as configurações de application.properties (consulte o Documento de Referência do Spring-Boot - 23. Configuração Externalizada ).
Então eu tentei usar -Dspring.config.location=classpath:test.properties
ao invocar o teste. Isso foi bem-sucedido - mas não quero definir essa propriedade do sistema para cada execução de teste. Então eu coloquei no código
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
que infelizmente não foi novamente bem sucedido.
Deve haver uma solução simples sobre como substituir as application.properties
configurações nos testes JUnit com as test.properties
que eu devo ter esquecido.