Я могу использовать Maven для генерации каталога, содержащего мои тесты и зависимости, и запускать их из командной строки, используя "java -cp". Но я не могу заставить это работать в одном банке, без воссоздания основной тестовой системы и необходимости проходить тестовую xmls и тому подобное. Думать, что это простая вещь, которую упускают из виду.
По сути, я полагаю, что это может быть вопросом: можете ли вы создать jar, который запускает main в зависимости от включенного пакета? Возможно, я не правильно спрашиваю или говорю, если да, то некоторая помощь с этим также будет оценена.
precon, Maven 3.5.4 и Java 1.8 установлены
Я смог «скопировать зависимости» и запустить следующую обычную командную строку TestNG:
java -cp %CD%\target\*; org.testng.TestNG TestTest.xml
но это не так хорошо, как просто собрать все в одну банку.
Если возможно, я не хочу пересоздавать основную часть TestNG, а затем проходить xmls и т. Д., Что я и сделал. Я хочу просто использовать TestNG как есть, упаковать его с моими тестами в один jar и запустить так:
java -jar% CD% \ target \ myproj-0.0.1-jar-with-dependencies.jar TestTest.xml
из файла My POM pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skipTests>true</skipTests>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0-beta3</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<!-- Source directory configuration -->
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.testng.TestNG</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- // Following plugin executes the testng tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<!-- // Suite testng xml file to consider for test execution -->
<suiteXmlFiles>
<suiteXmlFile>testtest.xml</suiteXmlFile>
</suiteXmlFiles>
<skipTests>${skipTests}</skipTests>
</configuration>
</plugin>
</plugins>
</build>
my testNG xml TestTest.xml
<groups>
<run>
<include name="basic"/>
</run>
</groups>
<classes>
<class name="myproj.TestTest"/>
</classes>
мои тесты в TestTest.java
package myproj;
import org.testng.annotations.Test;
public class TestTest{
@Test(groups = { "basic" })
public void Test05BasicPASS() {
System.out.println("This is test 5, Basic Pass");
}
}
структура каталогов:
-testproj
pom.xml
TestTest.xml
-src
-myproj
TestTest.java
Jars get output to:
-testproj
-target
В командной строке я могу успешно запустить:
пакет mvn -DskipTests = false
создавать, запускать тесты и создавать jar-файлы с maven
После запуска и наличия jar, я думаю, что я смогу выполнить следующее, а также запустить тесты:
java -jar% CD% \ target \ myproj-0.0.1-jar-with-dependencies.jar TestTest.xml
однако я получаю:
Ошибка: не удалось найти или загрузить основной класс org.testng.TestNG
Чистая цель - создать проект с помощью testng и запустить мои тесты с testNG xmls в командной строке.
Это должно работать независимо от IDE.