springboot~Profile开发环境与单元测试用不同的数据库

时间:2023-03-08 16:20:13
springboot~Profile开发环境与单元测试用不同的数据库

期望

  1. 希望开发环境dev用mysql
  2. 单元测试使用本机的h2数据库

引入依赖

    compile('org.springframework.boot:spring-boot-starter-data-jpa')
runtime('com.h2database:h2')
runtime('mysql:mysql-connector-java')

两种环境的配置,默认为dev

spring:
application.name: lind-productCenter
profiles.active: dev rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: pilipa
server:
port: 9090
---
spring:
profiles: dev
datasource:
url: jdbc:mysql://127.0.0.1:3306/productCenter?useSSL=false&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
jpa:
database: MYSQL
show-sql: true #显示后台处理的SQL语句
hibernate:
ddl-auto: update #自动检查实体和数据库表是否一致,如果不一致则会进行更新数据库表 ---
spring:
profiles: test
datasource:
platform: h2
driverClassName: org.h2.Driver
url: jdbc:h2:mem:testdb
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: update

单元测试可以提出一个基类,添加注解即可

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
public class BaseControllerTest {
@Autowired
protected WebTestClient http; /**
* action 执行前运行 .
*/
@Before
public void before() {
http = http.mutate()
.responseTimeout(Duration.ofMillis(300000))
.build();
} }