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.