![](/img/trans.png)
[英]How to exclude default application.properties add custom properties file using profiles in maven for spring boot project?
[英]How can I override Spring Boot application properties for tests without using profiles?
我发现有关在Spring Boot中使用主生产数据库和测试内存数据库的典型设置的所有信息非常稀缺。
测试属性没有约定,测试中的application.properties显然会覆盖main中的属性,并且没有诸如application-test.properties-> application.properties之类的回退机制。 我不想使用配置文件,因为我希望它们严格定义环境,这是另一个维度(本地,生产),并且我需要笛卡尔乘积main-local,test-local,main-production,test -生产..
所以我要让Spring为我做魔术,因此我在RepositoryTest上设置了@DataJpaTest批注。 Spring当然可以即时创建H2数据库,但是我找不到找到设置自定义架构或启用H2控制台的方法,因为application.properties被忽略了。
这是最标准的处理方式?
PS我认为这样做的简单方法是通过@SpringBootTest(properties = { "h2.console.enabled: true", "h2.console.path: /myconsole" })
覆盖测试中的@SpringBootTest(properties = { "h2.console.enabled: true", "h2.console.path: /myconsole" })
但是我找不到@DataJpaTest绑定它们的方式
您可以只在路径src/test/resources
提供第二个用于测试的application.yml / application.properties。 位于测试上下文中的一个用于测试,当您运行应用程序时,将使用src/main/resources
的文件。
例如,生产配置(使用postgres和ddl-auto validate保留数据)位于src/main/resources
:
spring:
datasource:
url: jdbc:postgresql://localhost/postgres
username: postgres
password: postgres
driver-class-name: org.postgresql.Driver
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: validate
并将测试配置(使用H2和ddl-auto create-drop)放置在src/test/resources
:
spring:
datasource:
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: create-drop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.