我正在使用
Spring Boot 1.4.3并且有一大堆用@DataJpaTest注释的测试.默认情况下,它们针对内存数据库运行.我希望能够暂时针对本地
MySQL运行所有这些.我怎么能这么简单地做到这一点?
我发现我可以通过添加@ActiveProfiles(“local”)来使其工作,其中我有一个指向我本地MySQL的application-local.properties,但是在任何地方添加它都是太多的工作,运行测试,然后再次删除它(因为我只想手动对MySQL运行,CI环境将针对内存db运行).
如果这很重要,我正在使用Maven.
更新:
所以我有一个application-local.properties,它包含连接到我的本地MySQL数据库的db属性(我已经使用它来运行我的应用程序对着本地MySQL)
然后我在包上右键单击IntelliJ并选择“在包中运行所有测试”.在该运行配置的设置中,我将-Dspring.profiles.active = local添加到“VM options”字段中.
我原本以为这会在测试期间激活本地配置文件,但事实并非如此.如果我停止本地MySQL,测试仍然运行正常.
最佳答案 您可以在同一application.properties(或.yml)中添加具有MySQL数据源属性的配置文件,如下所示:
application.yml
# Existing properties
---
spring:
profiles: h2
# More h2-related properties
---
spring:
profiles: postgres
database:
driverClassName: org.postgresql.Driver
datasource:
url: jdbc:postgresql://localhost:5432/db_dvdrental
username: user_dvdrental
password: changeit
jpa:
database: POSTGRESQL
generate-ddl: false
# More postgres-related properties
并在集成测试类中使用@ActiveProfiles(“postgres”)或使用VM参数启动容器:
java -Dspring.profiles.active=h2 ...