1

我在我的有这些属性application.properties

spring.datasource.url=jdbc:postgresql://localhsost:5432/myDatabase
spring.datasource.username=myUsername

我想mvn test使用上述以外的其他值运行,例如:

spring.datasource.url=jdbc:postgresql://my.test.server.com:5432/myDatabase
spring.datasource.username=anotherUsername

我尝试了以下

mvn test -Drun.arguments='--spring.datasource.jdbc:postgresql://my.test.server.com:5432/myDatabase --spring.datasource.username=anotherUsername'

并且没有spring前缀:

mvn test -Drun.arguments='--datasource.jdbc:postgresql://my.test.server.com:5432/myDatabase --datasource.username=anotherUsername'

但这似乎不起作用。如何在application.properties运行的上下文中覆盖这些值mvn test

4

4 回答 4

6

像这样的东西应该工作:

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
    <configuration>
      <systemPropertyVariables>
        <spring.datasource.jdbc>value</spring.datasource.jdbc>
      </systemPropertyVariables>
    </configuration>
  </plugin>

但更多时候,我们通过将测试版本application.properties放入src/test/resources. 在测试期间,该文件将具有更高的优先级。

于 2018-04-06T08:07:01.460 回答
5

在命令行中覆盖参数时,使用逗号作为分隔符,而不是空格:

mvn test -Drun.arguments='--spring.datasource.url=...,--spring.datasource.username=...'

这也应该有效:

mvn test -Dspring.datasource.url=... -Dspring.datasource.username=...

从 2021 年 4 月开始编辑

上面的语法对 Spring Boot 1.X 有效。使用 Spring Boot 2.0/2.1,使用:

mvn test -Dspring-boot.run.arguments='--spring.datasource.url=...,--spring.datasource.username=...'

在 Spring Boot 2.2 中,语法再次更改(使用空格作为分隔符):

mvn test -Dspring-boot.run.arguments='--spring.datasource.url=... --spring.datasource.username=...'

其他答案和评论提到使用配置文件并application.properties在. 这样,您应该能够为每个管道维护一个测试配置文件,您可以在其中放置自定义参数,然后使用以下命令测试您的管道:/src/test/resourcesapplication-{profile}.properties/src/test/resources

mvn test -Dspring.profiles.active=foobar
于 2018-04-06T08:41:30.377 回答
1

选项 1首选 Maven 结构特定

为您的测试目的创建一个要拾取的application.propertiestest/resources

选项 2Spring Test 单独微调特定的 Test 类

通过使用@TestPropertySource内联您想要的属性,直接在 Test 类上覆盖您的属性

选项 3Spring Boot - 多个属性文件或单个 YAML 文件

将道具分组在 Spring Profile 下(此处为示例)并直接从 maven 调用它: mvn test -Dspring.profiles.active="myOtherSpringProfile"

于 2018-04-06T08:12:25.577 回答
0

创建另一个application-dev.properties文件并粘贴:

spring.datasource.url=jdbc:postgresql://my.test.server.com:5432/myDatabase
spring.datasource.username=anotherUsername

然后使用命令-Dspring.profiles.active=dev中的选项运行mvn

  • 例如:mvn test -Dspring.profiles.active=dev

您可以根据需要添加任意数量的配置文件。

  • 句法:application-<profile name>.properties
于 2018-04-06T08:11:35.553 回答