0

我有一个使用 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 应用程序中执行此操作?

4

2 回答 2

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

    @ActiveProfiles("test")
    public class MyTest {
       ...
    }
    
于 2017-09-20T21:11:38.707 回答
0

Spring 应该自动为您执行此操作。在运行测试时从 src/test/resources 运行 application.properties,因为 spring 使用“test”配置文件运行。如果没有,@ActiveProfiles("test")请在您的测试类上添加注释(我的意思是您进行测试的类,而不是被测类)。如果这不起作用,您可以将 src/test/resources/application.properties 重命名为 src/test/resources/application-test.properties 并在运行配置中选择您的配置文件(有一个名为“配置文件”的字段)。参考更多信息

于 2017-09-20T05:50:03.597 回答