使用内存db进行Spring Boot测试

Neh*_*nia 28 spring spring-boot

我使用Spring Boot创建了一个Spring Web项目.想了解一下测试的做法.我需要一个内存嵌入式数据库说hsql或h2用于初始schema.sql的junits.在主应用程序上,数据库可以说是mysql或oracle

在非Spring Boot项目中,我们通常会有一个单独的applicationcontext.xml,它由Web应用程序引用,为了测试,我们将使用applicationContext-text.xml

现在,在Spring启动时,所有内容都是自动创建的,Spring Boot也是如此.想知道如何为应用程序设置嵌入式内存db for Junits和外部数据库(如MySQL).

我能想到的一个解决方案是使用Profiles.使用2个属性文件application.properties和application-test.properties.并为我的junits使用测试配置文件.

关于我应采取的方法的任何建议.

Dav*_*yer 40

实际上,配置文件是推荐的方法.我要做的可能是将内存中的实现设置为"默认"配置文件(它是无害的,从某种意义上说,你永远不会更改任何真实数据,因此最好将其作为默认设置,以防有人意外地在真实数据库上运行它).就个人而言,我更喜欢将所有外部配置放在一个application.yml文件中,但这完全取决于您.在外部配置中,您需要提供有效的驱动程序类和URL,例如

spring:
  datasource:
    driverClassName: org.h2.Driver
    url: jdbc:h2:mem:test;MODE=PostgreSQL
    schema: classpath:/schema.sql

---

spring:
  profiles: local
  datasource:
    url: jdbc:postgresql://localhost/test
    username: root
    password: changeme
    driverClassName: org.postgresql.Driver
    schema:
Run Code Online (Sandbox Code Playgroud)

(请注意,H2具有postgres兼容模式,因此它非常适合作为postgres的补充.)