29

我使用 Spring Boot 创建了一个 Spring Web 项目。想了解测试周围的实践。我需要一个内存嵌入式数据库,比如 hsql 或 h2 用于我的具有初始 schema.sql 的junit。在主应用程序上,数据库可以是 mysql 或 oracle

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

现在,在 Spring Boot 中,一切都是自动创建的,并且 Spring Boot 也被认为是。想知道如何为 Junits 设置一个嵌入式内存数据库和一个用于应用程序的外部数据库(如 MySQL)。

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

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

4

1 回答 1

41

配置文件确实是推荐的方法。我要做的可能是将内存中实现设置为“默认”配置文件(它是无害的,因为您永远不会更改任何真实数据,因此最好将其设为默认值,以防有人不小心对真实数据库运行它)。就个人而言,我更喜欢将所有外部配置放在一个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 的补充。)

于 2013-11-04T14:16:45.130 回答