Как запустить определенный класс Java из POM.XML со ссылкой на TestNG - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть Конфигурация Maven + TestNG + Selenium + Java

Я хочу запустить определенный класс Java из файла POM.XMl,

Пробовал:

     <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>demo.java</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

Существует общее решение, как я уже говорил, но оно не сработало.Он ничего не запустил, и сборка прошла успешно,

Обратите внимание, что при использовании TestNG не существует public static void main(String args[]) ни в одном из классов Java.

Было бы здорово получить объяснение по части <mainClass>demo.java</mainClass> со ссылкой на класс TESTNG.

До сих пор я пытался:

От Maven, как мне запустить класс, который живет под src / test / java?

Как выполнить файл класса Java из командной строки Maven

Как выполнить программу с использованием Maven?

Проект Maven Run

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Так как используют Maven + testng.В pom.xml вы можете использовать maven-surefire-plugin для запуска определенного TestCase, упомянутого в testng.xml.Variable TestCaseNames в pom.xml (несколько тестовых случаев с разделенными).Вы можете упомянуть ваш TestCase в Testng.

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>                     
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <properties>
                        <property>
                            <name>testnames</name>
                            <value>${TestCaseNames}</value>
                        </property>
                    </properties>
                </configuration>
            </plugin>

В TestNg:

<test name="TestCase1">
        <classes>
            <class name="com.company.test">
                <methods>
                    <include name="testCase1" />
                </methods>
            </class>
        </classes>
    </test>
0 голосов
/ 02 октября 2018

Я помню, однажды я прошел через это, и это сработало.

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <includes>
                    <include>demo.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>

Ссылка: http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

0 голосов
/ 27 сентября 2018

exec-maven-plugin требует public static void main(String[] args) метод.

Чтобы запустить класс TestNG из exec-maven-plugin, вам необходимо запустить TestNG в методе main.Попробуйте это решение:

public static void main(String[] args) {
    TestNG testSuite = new TestNG();
    testSuite.setTestClasses(new Class[] { MyClass.class }); //it would be probably name of the class in which `main` method is located
    testSuite.addListener(new MyListener()); //optional
    testSuite.setDefaultSuiteName("Test Suite");
    testSuite.setDefaultTestName("Test Name");
    testSuite.setOutputDirectory("/my/output/dir");
    testSuite.run();
}
...