Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mvn测试-覆盖application.properties中的值_Java_Spring_Maven_Application.properties - Fatal编程技术网

Java mvn测试-覆盖application.properties中的值

Java mvn测试-覆盖application.properties中的值,java,spring,maven,application.properties,Java,Spring,Maven,Application.properties,我的应用程序中有以下属性。属性: 我希望使用除上述值之外的其他值运行mvn测试,例如: 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

我的应用程序中有以下属性。属性:

我希望使用除上述值之外的其他值运行mvn测试,例如:

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测试的上下文中重写application.properties中的值?

类似的操作应该可以:

  <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中来实现这一点。在测试过程中,该文件将具有更高的优先级。

类似的内容应该可以工作:

  <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中来实现这一点。在测试期间,该文件将具有更高的优先级。

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

spring.datasource.url=jdbc:postgresql://my.test.server.com:5432/myDatabase
spring.datasource.username=anotherUsername
然后在mvn命令中使用-Dspring.profiles.active=dev选项运行

例如:mvn测试-Dspring.profiles.active=dev 您可以根据需要添加任意数量的配置文件

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

spring.datasource.url=jdbc:postgresql://my.test.server.com:5432/myDatabase
spring.datasource.username=anotherUsername
然后在mvn命令中使用-Dspring.profiles.active=dev选项运行

例如:mvn测试-Dspring.profiles.active=dev 您可以根据需要添加任意数量的配置文件

语法:application-.properties 优先选择选项1,因为它是Maven结构特有的

在测试/资源下创建application.properties以用于测试目的

选项2弹簧测试仅微调特定测试类

通过使用

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

将道具分组到Spring概要文件下,并直接从maven:mvn test-dsspring.profiles.active=myOtherSpringProfile调用它,首选选项1,因为它是maven结构特定的

在测试/资源下创建application.properties以用于测试目的

选项2弹簧测试仅微调特定测试类

通过使用

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


将支柱分组到Spring概要文件下,并直接从maven:mvn test-Dspring.profiles.active=myOtherSpringProfile调用它。在命令行中重写参数时,请使用逗号作为分隔符,而不是空格:

mvn test -Drun.arguments='--spring.datasource.url=...,--spring.datasource.username=...'
这也应该起作用:

mvn test -Dspring.datasource.url=... -Dspring.datasource.username=...
从2021年4月开始编辑 上述语法对SpringBoot1.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/resources中,这对您来说不是一个可行的解决方案,因为您使用不同的管道,但如果我没记错的话,您甚至可以在/src/test/resources中使用application-{profile}.properties。通过这种方式,您应该能够为每个管道维护一个测试概要文件,在其中放置自定义参数,然后使用以下工具测试管道:

mvn test -Dspring.profiles.active=foobar

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

mvn test -Drun.arguments='--spring.datasource.url=...,--spring.datasource.username=...'
这也应该起作用:

mvn test -Dspring.datasource.url=... -Dspring.datasource.username=...
从2021年4月开始编辑 上述语法对SpringBoot1.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/resources中,这对您来说不是一个可行的解决方案,因为您使用不同的管道,但如果我没记错的话,您甚至可以在/src/test/resources中使用application-{profile}.properties。通过这种方式,您应该能够为每个管道维护一个测试概要文件,在其中放置自定义参数,然后使用以下工具测试管道:

mvn test -Dspring.profiles.active=foobar

您需要创建配置文件。例如:application-local.properties、application-dev.properties、application-prod.properties为什么不在test/resources目录中创建特定的application.properties文件?@hamidghasemi,因为我在不同的管道中运行mvn测试,这些管道的值都不同。dev pipeline与master pipeline也不同,并读取了这些数据,也许它会有用—spring.datasource.jdbc:显然不是正确的属性—spring.datasource.url=is。基本上,您提供了错误的参数,因此没有什么可以覆盖的。不过,我强烈建议您使用配置文件以及SpringBoot对此的支持。您需要创建配置文件。例如:application-local.properties、application-dev.properties、application-prod.properties为什么不在test/resources目录中创建特定的application.properties文件?@hamidghasemi因为我在不同的管道中运行mvn测试,这些管道的值都不同dev pipeline与master pipel不同 如果你也读一读,也许它会有用-spring.datasource.jdbc:显然不是一个正确的属性-spring.datasource.url=is。基本上,您提供了错误的参数,因此没有什么可以覆盖的。然而,我强烈建议使用配置文件以及SpringBoot对此的支持。