Ответ 1
В соответствии с Пользовательское свойство suiteXmlFiles
Вы можете использовать:
mvn test -Dsurefire.suiteXmlFiles=test1.xml,test2.xml
У меня есть множество тестовых наборов в TestNG. Это файлы XML. Я хочу иметь возможность выбирать несколько наборов XML при запуске теста интеграции из maven.
В настоящее время я могу добавить файлы пакета в pom.xml следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile>
<suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
Это решение имеет некоторые ограничения. Я могу только изменить путь к набору тестов, который я определил в pom.xml. Поэтому в моем примере всегда должно быть два файла. Я не могу запустить, скажем, 5 наборов или только один.
Есть ли способ каким-либо образом параметризовать весь раздел "suiteXmlFiles" в pom.xml?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
${multiple_paths_ToMySuiteFiles}
</suiteXmlFiles>
</configuration>
</plugin>
Запуск всего, что соответствует данной тестовой группе, для меня не вариант: Я не хочу загружать все имеющиеся у меня комплекты, а затем запускать только выбранные тесты, используя группы в наборе TestNG. Причина заключается в том, что отчет, который генерируется после запуска всех наборов тестов с групповыми фильтрами, отличается от отчета, когда запускались только выбранные тестовые пакеты.
В соответствии с Пользовательское свойство suiteXmlFiles
Вы можете использовать:
mvn test -Dsurefire.suiteXmlFiles=test1.xml,test2.xml
Мы также затронули эту проблему нашими испытаниями. Нынешний обходной путь, который мы используем сейчас, - это определить переменную свойства в разделе свойств и вставить ее в блок safeXXMLFiles с гарантированным огнем.
<properties>
<!-- Default suites -->
<batsSuiteFile>${project.build.testOutputDirectory}/BatsTests.xml</batsSuiteFile>
<smokeSuiteFile>${project.build.testOutputDirectory}/SmokeTests.xml</smokeSuiteFile>
<!-- Default suite files if not being specified from mvn command line -->
<defaultSuiteFiles>${batsSuiteFile},${smokeSuiteFile}</defaultSuiteFiles>
<suiteFile>${defaultSuiteFiles}</suiteFile>
</properties>
Затем в разделе плагина...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<suiteXmlFiles>
<!-- Suite file injection parameter from command line -->
<suiteXmlFile>${suiteFile}</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
Если в командной строке ничего не указано, оно отпадет и по умолчанию будет указано 2 набора, указанных выше в разделе свойств. Затем, если вы хотите начать заданный набор файлов пакетов, вы можете сделать:
mvn test -DsuiteFile=test1.xml,test2.xml
Удивительно, что из maven docs вы ожидаете, что arg suiteXmlFiles должен просто переопределить это из командной строки и должен просто принять список с разделителями-запятыми testng xmls http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#suiteXmlFiles
Если у кого-то есть другой лучший способ, пожалуйста, поделитесь.
Вы можете использовать groups параметр или указать -Dgroups =... в командной строке:
(поставщик TestNG/JUnit47 только с JUnit4.8 +) Группы для этого теста. Только классы/методы/etc, украшенные одной из указанных групп здесь будут включены в тестовый прогон, если он указан. Для JUnit это параметр принудительно использует поставщика 4.7. Этот параметр игнорируется если указан параметр suiteXmlFiles..