我的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'
但这似乎不起作用。我如何在运行mvn test
的上下文中覆盖application.properties
中的值?
5条答案
按热度按时间b5buobof1#
应该可以这样做:
但更多的时候,我们会将
application.properties
的测试版本放入src/test/resources
中,在测试过程中,该文件将具有更高的优先级。jgwigjjp2#
在命令行中覆盖参数时,请使用逗号(而不是空格)作为分隔符:
这也应该可以:
编辑自2021年4月
上述语法对Sping Boot 1.X有效。对于Spring Boot 2.0/2.1,请用途:
在Sping Boot 2.2中,语法再次发生了变化(使用空格作为分隔符):
其他的回答和评论提到了使用配置文件,并在
/src/test/resources
中放置一个自定义的application.properties
,这对您来说不是一个可行的解决方案,因为您使用了不同的管道,但是如果我没记错的话,您甚至可以在/src/test/resources
中使用application-{profile}.properties
。这样,您应该能够为每个管道维护一个测试配置文件,在那里放置您的自定义参数,然后使用以下命令测试您的管道:bttbmeg03#
选项1(* 首选,因为Maven结构特定 *)
在
test/resources
下创建一个application.properties
,以便进行测试选项2(*Spring测试单独微调特定的测试类 *)
通过使用@TestPropertySource内联所需的属性,直接在Test类上重写属性
选项3(*Sping Boot -多个属性文件或单个YAML文件 *)
将属性分组到Spring配置文件(Example here)下,并直接从maven调用它:
mvn test -Dspring.profiles.active="myOtherSpringProfile"
gmol16394#
创建另一个
application-dev.properties
文件并粘贴:然后在
mvn
命令中使用-Dspring.profiles.active=dev
选项运行。mvn test -Dspring.profiles.active=dev
您可以根据需要添加任意多个配置文件。
application-<profile name>.properties
wnavrhmk5#
我没有看到很多人使用环境变量选项。如果你为相应的属性设置了一个环境变量,那么环境变量中的值就会被使用。
环境变量:用户my.test.server.com:5432/myDatabase名=另一个用户名
在属性文件中:用户名=我的用户名=我的用户名
应用程序将使用环境变量中的值。要使其正常工作,您需要遵循命名约定。使用大写字母并将“.”替换为“_"。