TestNG surefire, run suite with maven command line

2019-02-13 14:17发布

Is it possible to run a predefined xml suite from the command line through maven?

I am able to run a class or a particular test. But I am unable to run a suite.

Here is what I am running from the command line: -->

 mvn -Dtest=TestCircle#mytest -Denvironment=test -Dbrowser=firefox -DscreenShotDirectory=/Users/jeremy/temp test

I do have a suite defined, which runs nicely through intelliJ, but I am not sure how to invoke the suite.xml file.

Or for example, after the tests have run, testng creates a testng-failed file which is setup to run all the failed tests again.

Using mvn, how would I kick off this test suite.

3条回答
beautiful°
2楼-- · 2019-02-13 14:28

Usually you don't need nothing special in relationship with TestNG. Just use the maven-surefire-plugin:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
  </plugin>

and based on that all Tests which are correctly annotated should run. Ah of course you need a dependency to TestNG like this:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.5.2</version>
  <scope>test</scope>
</dependency>

Usually i wouldn't create Test Suites anymore, cause this a point which you have to maintain which is often missed to update etc. just use annotations.

If you need to run a particular suite of tests just define a testng.xml file in src/test/resources and enhance the configuration of the maven-surefire plugin appropriately.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
      <suiteXmlFiles>
        <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
      </suiteXmlFiles>
    </configuration>
  </plugin>
查看更多
够拽才男人
3楼-- · 2019-02-13 14:41
<build>
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
      <suiteXmlFiles>
        <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
      </suiteXmlFiles>
    </configuration>
  </plugin>
</build>

it worked for me.

查看更多
Viruses.
4楼-- · 2019-02-13 14:48

This answer gave me what I was looking for, namely the ability to pass at the command line the name of the suite I want to run:

http://www.vazzolla.com/2013/03/how-to-select-which-testng-suites-to-run-in-maven-surefire-plugin/

In a nutshell, add the following to the maven-surfire-plugin stanza of your pom.xml:

<suiteXmlFiles>
    <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>

Then you can specify the desired testng suite xml file at the command line:

mvn clean install test -DsuiteXmlFile=testngSuite.xml
查看更多
登录 后发表回答