Spring启动测试-使用不同的应用程序运行测试2次.属性



我有一个spring启动应用程序,有数据库的东西测试,我支持mysql和mssql。

我有src/text/resources/application-mysql.propertiessrc/text/resources/application-mssql.properties

当我运行测试时,我可以设置什么环境变量来告诉Spring使用哪个测试属性文件?

格式为application-*.properties的属性文件使用Spring profile激活。顺便说一下,YAML文件也是如此!重要的是要知道application.properties仍然是首先加载的,任何特定于配置文件的属性将覆盖先前加载的属性(这是Spring配置文件的全部意义)。

有多种方法来启用配置文件:

  1. 要回答您的问题,您可以设置SPRING_PROFILES_ACTIVE环境变量来启用配置文件。例如:export SPRING_PROFILES_ACTIVE=mysql。您还可以指定多个配置文件(它们以相同的顺序加载),用逗号分隔它们:export SPRING_PROFILES_ACTIVE=localdefaults,local

  2. 您也可以使用JVM参数spring.profiles.active。该值遵循与环境变量相同的格式。例如:-Dspring.profiles.active=mysql.

  3. 您可以在测试类上使用@ActiveProfiles注释。例如:

// Other annotations...
@ActiveProfiles("mysql")
public class MyTest {
  1. 如果您想在构建期间启用概要文件,您可以在Maven中设置spring.profiles.active属性。例如:
<profiles>
<profile>
<id>mysql</id>
<properties>
<spring.profiles.active>mysql</spring.profiles.active>
</properties>
</profile>
...
</profiles>
  1. 这是我最近学到的一个奇怪的。您还可以在属性文件中使用spring.profiles.active设置活动配置文件。我想这有它的用途,但我从未使用过这种方法。

阅读我所涵盖的所有内容:

  • https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html howto.properties-and-configuration
  • https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/ActiveProfiles.html

相关内容

  • 没有找到相关文章

最新更新