2015-03-13 60 views
5

我一張有註釋集成測試:春天開機測試 - 通過命令行參數

@WebAppConfiguration 
@ActiveProfiles("integration") 
@ContextConfiguration(loader = SpringApplicationContextLoader, classes = [MyApplication]) 
@IntegrationTest(["server.port=0"]) 

我可以通過例如server.port屬性測試範圍內,但沒有任何辦法通過命令行參數?我的應用程序通常是這樣開始的:

public static final void main(String[] args) { 
    SpringApplication.run(AnkaraCollectorApplication.class, args); 
} 

我想通過一些參數來測試上下文。有沒有這方面的任何財產?

回答

0

如果您正在使用Maven,您可以通過故障安全插件內部測試JVM ARGS:

<plugin> <artifactId>maven-failsafe-plugin</artifactId> <executions> <execution> ... <configuration>
<argLine> whatever you want: -DhelloWorld=Test </argLine> </configuration> ...

您還可以設置你正在執行基於Maven的輪廓此JVM參數:

<profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Development JVM arguments --> <test-arguments>-Dhello=true</test-arguments> <!-- Default environment --> <environment>develop</environment> </properties> </profile> ... <plugin> <artifactId>maven-failsafe-plugin</artifactId> <executions> <execution> ... <configuration>
<argLine>${test-arguments}</argLine> </configuration> ...

+0

但我需要通過命令行參數。我使用了一些庫,其中存在Spring ApplicationListener,並且此偵聽器使用ApplicationEnvironmentPreparedEvent.getArgs()中的命令行參數。我必須做一些getArgs()將返回我的參數。 – wjtk 2015-03-13 13:30:30

+0

這裏的問題是集成測試不會調用您的Application.main方法。它只是檢查註釋。你在哪裏使用這些命令參數? – jfcorugedo 2015-03-14 10:10:41