Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как запустить один конкретный тестовый набор testng.xml с помощью mave

maven-surefire-plugin
maven
java
testng
Теги: #<Tag:0x00007f7b68ef7988> #<Tag:0x00007f7b68ef76e0> #<Tag:0x00007f7b68ef74b0> #<Tag:0x00007f7b68ef7258>

(Elvis Presley ) #1

У меня есть несколько тестовых наборов: testng-ui.xml, testng-api.xml, testng-smoke.xml подскажите как запускать один из этих наборов, использую maven? В POM.xml добавил следующие строки:

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

                        <suiteXmlFiles>
                            <suiteXmlFile>src/test/resources/testng-ui.xml</suiteXmlFile>
                            <suiteXmlFile>src/test/resources/testng-api.xml</suiteXmlFile>
                            <suiteXmlFile>src/test/resources/testng-smoke.xml</suiteXmlFile>
                        </suiteXmlFiles>```
Запускаю следующей командой: mvn clean test -Dsurefire.suiteXmlFiles=testng-api.xml  
начинается сборка и запускаются все тестовые наборы. Подскажите пожалуйста как сделать, что бы запускался только один тестовый набор в данном случае testng-api.xml ???
Заранее благодарю.

(Nik Sidorenko) #2

Вариант 1
Попробуйте поменять на такое

    <suiteXmlFiles>
              <suiteXmlFile>src/test/resources/suites/${suiteXml}</suiteXmlFile>
    </suiteXmlFiles>

где ${suiteXml} - это переменная, которая будет принимать значение какой сьют запускать.

Запуск будет вот таким
-DsuiteXml=src/test/resources/testng-ui.xml

Не забудьте объявить property со значением по умолчанию

    <properties>
            <suiteXml>src/test/resources/testng-ui.xml</suiteXml>
    </properties>

А чтобы иметь возможность запускать все сьюты, создайте ещё один сьют testng-all.xml, в который включите все тесты из указанных сьютов.

Вариант 2
Уберите из pom.xml конфигурирование сьютов .
и запускайте как ранее через параметр
-Dsurefire.suiteXmlFiles=src/test/resources/testng-ui.xml
А случае запуска нескольких
-Dsurefire.suiteXmlFiles=src/test/resources/testng-ui.xml,src/test/resources/testng-api.xml,src/test/resources/testng-smoke.xml

Избежать полных путей к файла сьютов можно либо храня сьюты в одной папке с pom.xml, либо через переменную с путем к папке со сьютами

Полезная ссылка http://www.seleniumeasy.com/maven-tutorials/choose-selected-testng-xml-files-to-execute-using-maven
Только автор кажется запутался с surefire.suiteXmlFileS и surefire.suiteXmlFile. Нужно перепроверять.


(Oleksandr Molodetskyi) #3

Можно использовать профайлы http://maven.apache.org/guides/introduction/introduction-to-profiles.html
Записываете в мавене в таком виде:

<profiles>
		<profile>
			<id>SanityTest</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<version>2.18.1</version>
						<configuration>
							<suiteXmlFiles>
								<suiteXmlFile>testng.xml</suiteXmlFile>
							</suiteXmlFiles>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>Regression</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<version>2.18.1</version>
						<configuration>
							<suiteXmlFiles>
								<suiteXmlFile>regression.xml</suiteXmlFile>
							</suiteXmlFiles>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

теперь можно запускать в командной строке mvn test -PSanityTest - запуститcя только профайл с id SanityTest, запустите в командной строке ` mvn test -PRegression - профайл с id Regression. Можно создать еще третий профайл all - который будет включать оба теста и можно будет его запускать когда надо все тесты


(Fiodar Motin) #4

Вот еще один вариант с профилями мавена

  • запускает SUITES.xml где описаны еще 3 xml набора для разных браузеров
    ну и в самих фатйлах testChrome.xml, testFirefox.xml уже описаны тесты которые надо стартовать и нужные переменные.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="ParentSuite">
  <suite-files>
    <suite-file path="testChrome.xml"/>
    <suite-file path="testIE11.xml"/>
    <suite-file path="testFirefox.xml"/>
  </suite-files>
</suite>

Запускаете просто по профилям нужные проверки ( test -P chrome, test -P firefox, test -P internet-explorer-11)

<profiles>
    <profile>
        <id>chrome</id>
        <activation>
            <property>
                <name>SUITES</name>
            </property>
        </activation>
        <properties>
            <suites>testChrome</suites>
        </properties>
    </profile>
    <profile>
        <id>internet-explorer-11</id>
        <activation>
            <property>
                <name>SUITES</name>
            </property>
        </activation>
        <properties>
            <suites>testIE11</suites>
        </properties>
    </profile>
        <profile>
            <id>firefox</id>
            <activation>
                <property>
                    <name>SUITES</name>
                </property>
            </activation>
            <properties>
                <suites>testFirefox</suites>
            </properties>
        </profile>
    </profiles>
<build>
        <plugins>
                 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>${suites}.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${compiler.version}</source>
                    <target>${compiler.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Пример моей архитектуры https://github.com/tasks-delivery/task-delivery


(r292) #5

Хорошая статься по этому поводу.
http://software-testing.ru/library/testing/general-testing/1984--maven----