我使用spring boot 2.0并使用Postgres作为数据库部分。
有没有办法使用postgres数据库而不是内存数据库或某些东西h2或hsqldb进行测试?
答案 0 :(得分:1)
将PostgreSQL依赖项放到类路径中(Maven pom.xml
示例):
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
更新application.yml
配置文件:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/dbname?user=dbuser&password=dbpasswd
driverClassName: org.postgresql.Driver
在此示例中,JDBC URL使用dbname
数据库名称,dbuser
用户名和dbpasswd
密码。
您尚未直接指定它,但您可能有兴趣使用PostgreSQL数据库运行集成测试。如果是这样,你有一件事要做。创建一个名为application-it.yml
的新配置文件(it
代表“集成测试”)并将上面提到的内容放在那里。您还可以将依赖关系定义更改为:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
因此PostgreSQL驱动程序仅在测试范围内可用。接下来,当您编写集成测试时,请使用以下命令对其进行注释:
@ActiveProfiles("it")
因此spring将选择application-it.yml
配置文件来设置数据库连接。
您可能对使用嵌入式PostgreSQL运行集成测试感兴趣。您可以使用此库:
https://github.com/yandex-qatools/postgresql-embedded
在这里,您可以找到一个如何将它与Spring Boot一起用于测试的示例:
https://gist.github.com/Opalo/792c38c689fbedd762670812cb9f7e7c
使用嵌入式PostgreSQL有一个显着优势 - 您无需手动设置数据库。您可以在本地开发以及持续集成服务器中使用它。希望它有所帮助。
答案 1 :(得分:0)
可以在junit测试中编写
@DataJpaTest @AutoConfigureTestDatabase(替换= Replace.NONE)
将使用配置文件的默认数据库