我在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
中的值
答案 0 :(得分:4)
这样的事情应该有效:
<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
。在测试期间,该文件将具有更高的优先级。
答案 1 :(得分:1)
选项1 (首选,因为Maven结构特定)
在application.properties
下创建test/resources
,以便为测试目的而选择
选项2 ( Spring Test仅对特定测试类进行微调)
内联您想要的属性,直接在Test类上覆盖您的属性选项3 ( Spring Boot - 多个属性文件或单个YAML文件)
将道具归入春季档案(Example here)并直接从maven调用:mvn test -Dspring.profiles.active="myOtherSpringProfile"
答案 2 :(得分:1)
在命令行中覆盖参数时,请使用逗号作为分隔符,而不是空格:
mvn test -Drun.arguments='--spring.datasource.url=...,--spring.datasource.username=...'.
这也应该有效:
mvn test -Dspring.datasource.url=... -Dspring.datasource.username=...
其他答案和评论提到使用配置文件并在application.properties
中放置自定义/src/test/resources
,由于您使用不同的管道,这对您来说不是一个可行的解决方案,但如果我没记错,您甚至可以使用application-{profile}.properties
中的/src/test/resources
。这样,您应该能够为每个管道维护一个测试配置文件,您可以在其中放置自定义参数,然后使用以下命令测试管道:
mvn test -Dspring.profiles.active=foobar
答案 3 :(得分: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