Victor Vidigal Ribeiro
Victor Vidigal Ribeiro

Reputation: 193

How to pass parameter to maven test

I have One test suite running in two environment. Sometimes, I would like to run tests in localhost:8080 and sometimes at localhost:8585. Jenkins run the tests by "mvn test" command.

How could I pass the port by parameter? Something like "mvn test 8080".

Upvotes: 5

Views: 28156

Answers (3)

viren tiwari
viren tiwari

Reputation: 21

After doing some research, I found the below code:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <configuration>
        <systemProperties>
          <property>
            <suiteXmlFiles>
            <suiteXmlFile>${testsuite}</suiteXmlFile>
            </suiteXmlFiles>
          </property>
        </systemProperties>
     </configuration>
</plugin>

Please run the maven command:

mvn test -Dtestsuite =yourxmlsuitepath

Upvotes: 1

Victor Vidigal Ribeiro
Victor Vidigal Ribeiro

Reputation: 193

I add a plugin on maven pom.xml

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <configuration>
        <systemProperties>
          <property>
             <name>fileName</name>
             <value>${fileName}</value>
          </property>
        </systemProperties>
     </configuration>
</plugin>

And get the parameter in junit code with

String fileName = System.getProperty("fileName");

After, I run my tests with -DfileName argument

mvn clean test -DfileName="config-test.xml"

Now, I can put all configurations in xml file and load appropriate file with the corrects parameters.

mvn clean test -DfileName="config-test.xml"

or

mvn clean test -DfileName="config-homolog.xml"

I solved the problem with the tips from Sandra Sukarieh and http://syntx.io/how-to-pass-parameters-to-the-junit-tests-from-the-maven-surefire-plugin/

Thank you very much

Upvotes: 7

Sandra Sukarieh
Sandra Sukarieh

Reputation: 143

try this:

mvn -Dtest=testName -Dargline="-Dport=portValue"

and portValue will be either 8080 or 8585, and while you have a "port" variable declared in your test code.

Upvotes: 2

Related Questions