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