Me perdoe, pois do jeito que eu descrevi parece mesmo que os perfis e o src/test/resources/application.properties
são equivalentes.
Vamos esclarecer o primero ponto:
O Spring lê src/main/resources/application.properties
sempre que vc executa sua aplicação normalmente, seja usando gradle bootRun
ou mvn spring-boot:run
.
Mas quando vc executa os seus testes, o Spring lê src/test/resources/application.properties
. Se o Spring não encontrar um properties em src/test
ele vai usar o que está em src/main
.
Quando eu devo usar um properties em src/test
?\
Quando vc precisa de configurações diferentes para os seus testes.
Aqui está um exemplo prático:
O ideal é que o seu ambiente de teste seja o mais parecido possível com o ambiente de produção, mas vamos imaginar que vc usa o MySQL enquanto está programando e usa o H2 quando roda seus testes automatizados.
Vc colocaria as configurações do MySQL em main/resources
e as configurações do H2 em test/resources
.
Agora o segundo ponto que é sobre os perfis.
Vc pode ter multiplos perfis em sua aplicação. Os motivos para usar multiplos perfis são inúmeros, mas aqui está um exemplo simples:
Digamos que na sua empresa vc tenha 2 ambientes:
-
O ambiente de produção, que é o ambiente real usados pelos seus clientes
-
O ambiente de verificação, que é um ambiente provisório para onde vc manda novas funcionalidades para que possam ser testadas antes de serem passadas para o ambiente de produção.
Com base nisso vc poderia ter estas 3 configurações:
-
src/main/resources/application-verification.properties
. Que teria os dados de acesso do MySQL do seu ambiente de verificação.
-
src/main/resources/application-production.properties
. Que teria os dados de acesso do MySQL do seu ambiente de produção.
-
src/main/resources/application-dev.properties
. Que teria os dados de acesso do MySQL que vc instalou na sua própria máquina, é o que vc usa enquanto está desenvolvendo.
Perceba que tanto o ambiente de produção quanto o de verificação, de acordo com meu exemplo, são servidores reais que poderiam ser acessados pela Internet. A diferença é que o endereço do ambiente de produção é conhecido e acessado pelos seus clientes, já o endereço do ambiente de verificação é secreto, conhecido apenas por vc e pelo time responsável por aprovar as novas funcionalidades.