Плагин Surefire неправильно обрабатывает параллельные тесты TestNG - PullRequest
0 голосов
/ 16 января 2020

У меня есть тестовый проект с классом, содержащим 4 тестовых метода, я выполняю эти тесты параллельно, создавая 4 разных для одного и того же класса в testng. xml, также сделал необходимые записи в разделе плагина POM> Surefire.

Теперь проблема в том, что ....

Шаг 1: Если я щелкаю правой кнопкой мыши на POM. xml и запускаюсь как «Тест Maven», я вижу результаты ниже (неверные )

<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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.test.parallel</groupId>
    <artifactId>DemoFramework</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
        <suiteXmlFiles>testng.xml</suiteXmlFiles>
        <skipTests>false</skipTests>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.8.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.1.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.clerezza.ext</groupId>
            <artifactId>org.json.simple</artifactId>
            <version>0.4</version>
        </dependency>

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4.0-atlassian-hosted</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.zeroturnaround/zt-zip -->
        <dependency>
            <groupId>org.zeroturnaround</groupId>
            <artifactId>zt-zip</artifactId>
            <version>1.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.0</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>atlassian-public</id>
            <url>https://packages.atlassian.com/mvn/maven-external/</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>warn</checksumPolicy>
            </releases>
        </repository>
    </repositories>
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>qa</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <env>qa</env>
            </properties>
        </profile>
        <profile>
            <id>offline</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <env>offline</env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <env>prod</env>
            </properties>
        </profile>
    </profiles>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>auto-clean</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                        <configuration>
                            <verbose>true</verbose>
                            <filesets>
                                <fileset>
                                    <directory>test-output</directory>
                                    <directory>target</directory>
                                </fileset>
                            </filesets>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <verbose>false</verbose>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>transform</id>
                        <phase>test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <delete
                                    file="${project.build.outputDirectory}/environment.properties" />
                                <copy
                                    file="src/main/resources/environment.${env}.properties"
                                    tofile="${project.build.outputDirectory}/environment.properties" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M4</version>
                <executions>
                    <execution>
                        <id>default-test</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>start</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <skipTests>${skipTests}</skipTests>
                    <suiteXmlFiles>${suiteXmlFiles}</suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>

    </build>
</project>




    [INFO] Results:
    [INFO] 
    [ERROR] Failures: 
    [ERROR] com.test.parallel.tests.SampleTest.beforeMethod
    [ERROR]   Run 1: SampleTest>BaseTest.beforeMethod:49 » Runtime Simulating configuration failure
    [ERROR]   Run 2: SampleTest>BaseTest.beforeMethod:49 » Runtime Simulating configuration failure
    [ERROR]   Run 3: SampleTest>BaseTest.beforeMethod:49 » Runtime Simulating configuration failure
    [ERROR]   Run 4: SampleTest>BaseTest.beforeMethod:49 » Runtime Simulating configuration failure
    [INFO] 
    [INFO] 
    [ERROR] **Tests run: 12, Failures: 1, Errors: 0, Skipped: 1**
    [INFO] 
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  5.589 s
    [INFO] Finished at: 2020-01-16T19:12:16+05:30
    [INFO] ------------------------------------------------------------------------

Шаг 2: Если я щелкну правой кнопкой мыши на testng. xml и запустлю как «TestNG Suite», я увижу следующие результаты (правильные)

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" thread-count="32" parallel="methods">
    <listeners>
        <listener
            class-name="com.test.parallel.selenium.TestExecutionListener"></listener>
        <listener
            class-name="com.test.parallel.selenium.TestNGReportListener"></listener>
    </listeners>
    <test name="chrome1">
        <parameter name="browser" value="chrome" />
        <parameter name="server"
            value="http://127.0.0.1:4723/wd/hub" />
        <classes>
            <class name="com.test.parallel.tests.SampleTest" />
        </classes>
    </test>
    <test name="firefox1">
        <parameter name="browser" value="forefox" />
        <parameter name="server"
            value="http://127.0.0.1:4723/wd/hub" />
        <classes>
            <class name="com.test.parallel.tests.SampleTest" />
        </classes>
    </test>
    <test name="chrome2">
        <parameter name="browser" value="chrome" />
        <parameter name="server"
            value="http://127.0.0.1:4723/wd/hub" />
        <classes>
            <class name="com.test.parallel.tests.SampleTest" />
        </classes>
    </test>
    <test name="firefox2">
        <parameter name="browser" value="forefox" />
        <parameter name="server"
            value="http://127.0.0.1:4723/wd/hub" />
        <classes>
            <class name="com.test.parallel.tests.SampleTest" />
        </classes>
    </test>
</suite>


> =============================================== 
> Suite Total tests run: 16, Passes: 12, Failures: 0, Skips: 4
> Configuration Failures: 4,
> Skips: 0
> ===============================================

результаты, представленные на шаге 1, отличаются от шага 2. Как видите, общее количество тестов должно быть 16, при этом 4 - пропуски (ошибки конфигурации) и 12 - пропуски. Но Surefire сообщает о том, что они неверны как 12, в то время как ошибки равны 1, а Пропуски равны 1, всего всего 14.

Разве это не неправильно? или я неверно истолковываю результаты? Как я могу заставить плагин Maven Surefire сообщать правильные результаты как результаты TestNG.

Цените ваши входные данные.

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