如何配置Spring Boot Application在启动时在特定数据库上运行

时间:2017-09-20 05:26:38

标签: spring selenium spring-mvc spring-boot application.properties

我有一个使用Spring Boot开发的Spring MVC应用程序。顺便说一下,这个应用程序仅用于学习目的。

默认情况下,应用程序启动并使用MySQL数据库。对于单元和集成测试,我使用内存中的H2数据库,它运行良好。

为此,我有两个application.properties。一个在 /src/main/resources/application.properties 下。

spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost/myDatabase
spring.datasource.username = root
spring.datasource.password = mysql

spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false

/src/test/resources/application.properties

下的其他application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"
spring.datasource.username=sa
spring.datasource.password=sa

现在,我必须使用Selenium进行自动化网站测试,并且我不希望我的MySQL数据库填充测试数据。

我之前没有在Spring工作过,但我希望我的应用程序能够像这样工作:

  • 使用某些命令从终端我的应用程序启动,指定它应该使用的数据库。它应该在localhost:8080
  • 上启动
  • 然后,在localhost:8080中运行所有Selenium测试。只要应用程序正在运行,Selenium测试生成的所有数据都只保留在内存中

如何使用application.properties或其他配置在Spring Boot Application中执行此操作?

2 个答案:

答案 0 :(得分:0)

Spring应该自动为你做这件事。要在运行测试时从src / test / resources运行application.properties,因为spring运行时使用“test”配置文件。如果没有,请在测试类中添加@ActiveProfiles("test")注释(我指的是您进行测试的类,而不是测试中的类)。如果这不起作用,您可以将src / test / resources / application.properties重命名为src / test / resources / application-test.properties并在运行配置中选择您的配置文件(有一个名为'profile'的字段)。 Referencemore info

答案 1 :(得分:0)

  1. 创建一个名为application-test.properties的单独属性文件,并将其放在/src/test/resources下。测试数据库属性(或任何其他测试特定属性)应该放在这里。
  2. 在测试类的顶部,使用此批注@ActiveProfiles("test")

    @ActiveProfiles("test")
    public class MyTest {
       ...
    }