使用内存db进行Spring Boot测试

时间:2013-10-26 05:43:26

标签: 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也是如此。想知道我如何为应用程序设置一个嵌入式内存数据库和一个像MySQL这样的外部数据库。

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

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

1 个答案:

答案 0 :(得分: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:

(注意H2有一个postgres兼容模式,所以它非常适合作为postgres的补充。)