Как сделать исполняемый файл jar с помощью IntelliJ из файла Selenium/TestNG java?
Я был Googling для дней, пытаясь выяснить, как это сделать, если кто-то сделал это раньше, я бы очень признателен за помощь.
у меня есть тестовый проект автоматизации, который я создал в IntelliJ, который автоматизирует взаимодействие пользователя с веб-приложением.
Я хотел бы поместить этот автоматический тест (созданный на Java, используя Selenium и TestNG) в исполняемый файл jar, который другие могут запустить, дважды щелкнув файл jar.
каждый раз, когда я попытка чтобы создать файл jar, перейдя к структуре проекта - > артефакт - > + - > Jar - > из модулей с зависимостями, он в конечном итоге создает jar, который утверждает это,
"Could not find or load the main class <package.MainClass> "
когда я пытаюсь запустить его с помощью следующей команды:
java -jar MyProject.jar <Manifest Path>
любая идея, почему я постоянно получаю эту ошибку, или есть способ сделать это с успехом?
кроме того, вот мой пом.XML-код:
<groupId>TestAutomation</groupId>
<artifactId>TestAutomation</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.test.automation.Executable</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.39.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.40.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
</dependencies>
1 ответов
Я, наконец, понял это для всех, кто сталкивается с этой проблемой, вот как я получил файл jar для создания и успешного запуска...
мне пришлось сменить помпон.xml-файл следующего содержания:
<groupId>TestAutomation</groupId>
<artifactId>TestAutomation</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.test.automation.Executable</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.40.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
</dependencies>
затем мне пришлось настроить мой основной метод, чтобы не использовать вызовы, связанные с TestNG. Например, я не мог использовать что-то подобное для моего основного метода:
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] {WordProfFonts2Set0.class});
testng.addListener(tla);
testng.run();
наконец, вот шаги, чтобы получить соответствующую банку созданный файл:
- Выберите Файл > Структура Проекта... из верхнего меню
- выберите "артефакт" в меню слева и нажмите"+"
- выберите Jar > из модулей с зависимостями...
- выберите основной класс с помощью кнопки обзора
- нажмите переключатель рядом с " извлечь в целевую банку "и нажмите"ОК"
- нажмите"+", затем выберите"тестовый выход модуля"
- в доступных элементах панель справа, разверните имя проекта и выберите все файлы Maven, затем переместите их в каталог jar, создаваемый в левой панели
- нажмите "OK"
- Выберите Построить > Построить Артефакты... из верхнего меню
- наведите курсор на созданную банку и нажмите "построить" в разделе Действия
Примечания:
-
обязательно добавьте драйвер IE или Chrome в папку ресурсов проектов и вызовите его через папку кода, вместо жесткого диска компьютера. Например, сделайте следующее:
File file = новый файл ("src\test\resources\binaries\IEDriverServer.exe");
не так:
File file = new File
("C:\Users\<Username>\<Proj Name>\src\test\java\src\
test\resources\binaries\IEDriverServer.exe");
затем создайте тот же каталог с драйвером в той же папке, в которой ваша банка сохраняется на вашем компьютере:
src
TestAutomation.jar
2 . Убедитесь, что при использовании IE этот защищенный режим установлен для всех зон или ни для одной из них (в IE перейдите к параметрам Интернета... > Безопасность (вкладка) > флажок Включить защищенный режим)