2015-03-13 7 views
5

Ich habe Integrationstest mit Anmerkungen darauf:Federbootprüfung - vorbei Kommandozeilenargument

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

ich zum Beispiel server.port Eigenschaft passieren kann Kontext zu testen, aber ist es eine Möglichkeit, Kommandozeilen-Argumente zu übergeben? Meine Anwendung wird normalerweise folgendermaßen gestartet:

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

und ich möchte einige Argumente übergeben, um Kontext zu testen. Gibt es dafür eine Eigenschaft?

Antwort

0

Wenn Sie Maven verwenden, können Sie Test JVM args in der Failsafe-Plugin übergeben:

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

Sie auch diese JVM Argumente basieren auf dem Maven Profil einstellen, dass Ihr ausführen:

<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

Aber ich muss Kommandozeilenargumente übergeben. Ich verwende eine Bibliothek, in der es ApplicationListener gibt, und dieser Listener verwendet Befehlszeilenargumente von ApplicationEnvironmentPreparedEvent.getArgs(). Ich muss etwas tun, dass getArgs() meine Argumente zurückgibt. – wjtk

+0

Das Problem hier ist der Integrationstest ruft nicht Ihre Application.main-Methode auf. Es prüft nur die Anmerkungen. Wo verwenden Sie diese Befehlsargumente? – jfcorugedo