Невозможно выполнить контрольные примеры с помощью программной генерации - PullRequest
0 голосов
/ 26 октября 2018

У меня есть проект Maven для Selenium Automation.Я программно выполняю контрольные примеры.Я создал класс DynamicSuiteHelper.java для динамического создания своего пакета.Когда я запускаю это из Eclipse IDE, оно выполняется как положено.Теперь я хочу выполнить этот код с помощью Maven.

Итак, сначала я сделал mvn clean install.И затем, когда я запустил файл Automation.jar, он начал выполнение, но результаты показывают, что было выполнено 0 тестов.Поэтому я вернулся в выходную папку, которая показала, что файл набора был создан и создан так, как я планировал.

Я использую три плагина:

1) maven-surefire:

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

2) maven-компилятор:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <showDeprecation>true</showDeprecation>
        <showWarnings>true</showWarnings>
        <fork>true</fork>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Xlint:all,-options,-path</arg>
        </compilerArgs>
    </configuration>
</plugin>

3)maven-shade: (для создания исполняемых jar-файлов)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
            <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>com.project.automation.tests.DynamicSuiteHelper</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

Также тестовые классы находятся в том же пакете, что и класс DynamicSuiteHelper.java.

Фрагмент кода для класса DynamicSuiteHelper:

    TestNG dynamicTestNG = new TestNG();
    XmlSuite dynamicSuite = new XmlSuite();
    List<XmlTest> listOfTests = new ArrayList<XmlTest>();
    XmlTest dynamicTest = new XmlTest(dynamicSuite);
    List<XmlClass> listOfClasses = new ArrayList<XmlClass>();
    listOfClasses.add(new XmlClass("com.project.automation.tests.test1.Test1Class1"));
    listOfClasses.add(new XmlClass("com.project.automation.tests.test1.Test1Class2"));
    listOfClasses.add(new XmlClass("com.project.automation.tests.test2.Test2Class1"));
    listOfClasses.add(new XmlClass("com.project.automation.tests.test2.Test2Class1"));
    dynamicTest.setClasses(listOfClasses );
    listOfTests.add(dynamicTest);
    dynamicSuite.setTests(listOfTests);
    List<XmlSuite> listOfSuites = new ArrayList<XmlSuite>();
    listOfSuites.add(dynamicSuite);
    dynamicTestNG.setXmlSuites(listOfSuites);
    dynamicTestNG.run();

Также структура проекта выглядит следующим образом:

project
 |--automation
      |--tests
           |--test1
                |--Test1Class1.java
                |--Test1Class2.java
           |--test2
                |--Test2Class1.java
                |--Test2Class2.java
           |--BaseTest.java
           |--DynamicSuiteHelper.java

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Нашел решение и запустил тестовые примеры.

Вместо maven-shade-plugin я использовал maven-assembly-plugin.Я добавил тестовые классы извне из плагина, а также некоторые ресурсы.

Я заметил, что maven-shade-plugin не собирал мои тестовые классы.Поэтому я попробовал с maven-assembly-plugin.

Еще раз спасибо всем за уделенное время.

0 голосов
/ 30 октября 2018

В вашем основном классе проблема. Вы ссылаетесь на класс как com.automation.tests.test1.Test1Class1, но структура папок, которой вы поделились, не совпадает с именем пакета (не должно ли это быть com.project.automation.tests.test1.Test1Class1 и так далее для других классов?).

Таким образом, TestNG в основном генерирует исключение и прерывает выполнение, но поскольку для вашего многословия установлено значение 1, возможно, вы даже не видите этих исключений.

У XmlClass есть другой вариант конструктора, в котором вы можете напрямую обратиться к имени класса (см. javadocs здесь ) вместо того, чтобы использовать полное имя класса в виде строки (это может быть очень подвержено ошибкам и я лично держусь подальше от этого).

Кроме того, добавление строки dynamicTestNG.setVerbose(2); к вашему коду гарантирует, что вы также начнете видеть эти ошибки.

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