Spring boot 如何更改数据库测试

Spring boot 如何更改数据库测试,spring-boot,Spring Boot,我使用SpringBoot2.0,数据库部分使用Postgres 有没有一种方法可以使用postgres数据库代替内存数据库或h2或hsqldb进行测试?将PostgreSQL依赖关系放到类路径中(Mavenpom.xml示例): 在本例中,JDBCURL使用dbname数据库名称、dbuser用户名和dbpasswd密码 在运行测试时使用PosrgreSQL 您还没有直接指定它,但您可能对使用PostgreSQL数据库运行集成测试感兴趣。如果是这样,你必须做一件事。创建一个名为applicat

我使用SpringBoot2.0,数据库部分使用Postgres


有没有一种方法可以使用postgres数据库代替内存数据库或h2或hsqldb进行测试?

将PostgreSQL依赖关系放到类路径中(Maven
pom.xml
示例):

在本例中,JDBCURL使用
dbname
数据库名称、
dbuser
用户名和
dbpasswd
密码

在运行测试时使用PosrgreSQL 您还没有直接指定它,但您可能对使用PostgreSQL数据库运行集成测试感兴趣。如果是这样,你必须做一件事。创建一个名为
application it.yml
it
代表“集成测试”)的新配置文件,并将上面提到的内容放在那里。您还可以将依赖项定义更改为:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>test</scope>
</dependency>
因此spring将选择
应用程序it.yml
配置文件来建立数据库连接

参考:

好处:使用嵌入式PostgreSQL 您可能对使用嵌入式PostgreSQL运行集成测试感兴趣。您可以使用此库:

在这里,您可以找到一个如何将其与Spring Boot一起用于测试的示例:


使用嵌入式PostgreSQL有一个显著的优势——您不必手动设置数据库。您可以在本地开发中以及与持续集成服务器一起使用它。希望有帮助。

可能在junit测试中编写

@DataJpaTest @AutoConfigureTestDatabase(replace=replace.NONE)

这将使用配置文件的默认数据库

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/dbname?user=dbuser&password=dbpasswd
    driverClassName: org.postgresql.Driver
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>test</scope>
</dependency>
@ActiveProfiles("it")