Запуск разных тестовых наборов с использованием testng и maven - PullRequest
3 голосов
/ 19 апреля 2011

Я использую TestNg и Maven с плагином surefire для запуска моих тестов. У меня есть несколько разных компонентов, которые я хочу запускать в разное время с использованием одного и того же модуля. В настоящее время для этого у меня есть несколько разных XML-файлов, определяющих набор тестов, и у меня настроен pom, поэтому я могу выполнить mvn test -Dtestfile = / path и использовать этот набор вместо этого.

Мне было интересно, есть ли способ объединить файлы XML в один файл, и я выбрал базовые имена тестов или какую-то другую систему?

РЕДАКТИРОВАТЬ: у меня уже есть все мои тесты с Smoke, Sanity, Regression, и я хотел бы иметь возможность запускать все регрессии для данного компонента. Если я запускаю CLI TestNG, я могу указать -testnames comp1, comp2, comp3 и т. Д. где каждый компонент определен в одном пакете XML, который содержит несколько тестов (). Мне было интересно, есть ли какой-нибудь способ сделать это в Maven, кроме использования плагина exec: java.

Ответы [ 3 ]

7 голосов
/ 19 апреля 2011

TestNG поддерживает группы тестов, указав группы для классов / методов тестирования в самих тестовых примерах или в файле suite.xml.Используя группы, вы можете поместить все свои тесты в один XML-файл.См. Группы в руководстве пользователя TestNG.

Плагин surefire позволяет включать или исключать тесты на основе группы:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.8.1</version>
        <configuration>
          <groups>${testng.groups}</groups>
        </configuration>
      </plugin>

Вы можете поместить все свои тесты водин XML-файл, а затем выберите, какие из них следует запустить, задав группу или группы для включения в свойство $ {testng.groups}, которое должно быть списком имен групп, разделенных запятыми.

Вы можете определитьзначение свойства $ {testng.groups} в POM с использованием профилей или в командной строке -Dtestng.groups=[groups to run].

6 голосов
/ 19 апреля 2011

Что вы можете сделать, это определить различные профили

  <profiles>
    <profile>
      <id>t1</id>
      <build>
        <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.8.1</version>
          <configuration>
            <suiteXmlFiles>
              <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
          </configuration>
        </plugin>
      </plugins>
      </build>
     </profile>
   </profiles>

и вызов из командной строки через mvn -Pt1 ... или определите свойство в профиле и используйте это свойство в конфигурации.

1 голос
/ 05 ноября 2016

Также обратите внимание, что TestNG позволяет объединять несколько наборов в один, например, если вы хотите объединить ваши тесты API и API в один пакет:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="uber-smoke-suite" verbose="1" parallel="methods" thread-count="1" configfailurepolicy="continue">
  <suite-files>
    <suite-file path="smoke_api.xml" />
    <suite-file path="smoke_ui.xml" />
  </suite-files>
</suite>

Таким образом, вы также можете создать пакет uber, который объединит все ваши тесты в один, но при этом все же позволит вам запускать один пакет, например ::

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