Динамический выбор тестовых случаев на Testng.xml с использованием Maven - PullRequest
0 голосов
/ 01 октября 2019

У меня есть набор тестовых наборов, определенных в файле testng.xml, и я передаю аргумент из файла pom.xml для вызова файла testng

Однако мне нужно решение, в котором я могу передать аргумент какПеременная окружения, чтобы определить, какой набор я хочу выполнить из testng.xml

Сначала я думал о том, чтобы иметь несколько файлов testng.xml, но наличие нескольких файлов не кажется лучшим решением

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="Sanity">
        <classes>
            <class name="com.ibm.wce.scbn.cc.runner.Sanity" />
        </classes>
    </test> 
</suite> 
<suite name="Suite">
    <test name="Regression">
        <classes>
            <class name="com.ibm.wce.scbn.cc.runner.Reg" />
        </classes>
    </test> 
</suite> 

Pom.xml

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
                <configuration>
                    <!-- TestNG Suite XML files list for test execution -->
                    <suiteXmlFiles>
                        <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>

Аргумент виртуальной машины: mvn clean install -DsuiteXmlFile = testng.xml, testng2.xml

1 Ответ

0 голосов
/ 02 октября 2019

Я думаю, что вы ищете profiles в Maven. Смотрите здесь для получения дополнительной информации

В вашем pom.xml добавьте раздел profiles и ваш plugins перейдет в <pluginManagement> в теге build, как показано ниже

  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>

 <pluginManagement> 


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

            <configuration>
                          <suiteXmlFiles>
                          <suiteXmlFile>suite1.xml</suiteXmlFile>
                          </suiteXmlFiles>

            </configuration>
     </plugin>
   </plugins>

 </pluginManagement>  

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

   </plugins>

  </build>



  <profiles> 
        <profile>

            <id>suite1</id>

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

                         <configuration>
                                  <suiteXmlFiles>
                                  <suiteXmlFile>testng-customsuite.xml</suiteXmlFile>
                                  </suiteXmlFiles>

                         </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

         <profile>

            <id>suite2</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>

                         <configuration>
                                  <suiteXmlFiles>
                                  <suiteXmlFile>suite2.xml</suiteXmlFile>
                                  </suiteXmlFiles>

                         </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

<dependencies> 
    ....
 </dependencies>

Затем на основе profiles вы можете активировать profile, как это из командной строки, и тогда suite, упомянутый в этом профиле, будет выполнен

mvn clean test -P suite2

Обратите внимание, что

<pluginManagement> - определить плагины

<plugins> - активировать плагины

<profile> - запустить подходящий плагин в зависимости от того, что вы передаете в командной строке

Этот профиль также может быть активирован через переменные окружения

Сверху ссылка Supported variables are system properties like ${user.home} and environment variables like ${env.HOME}

РЕДАКТИРОВАТЬ: Посмотрите на это , кажется, это говорит о том, что вы пытаетесьсделать это может быть невозможно, но вы можете попробовать второе решение. Именно это я и имел в виду, когда копировал вставленный выше текст с официального сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...