Как сделать исполняемый файл 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();

наконец, вот шаги, чтобы получить соответствующую банку созданный файл:

  1. Выберите Файл > Структура Проекта... из верхнего меню
  2. выберите "артефакт" в меню слева и нажмите"+"
  3. выберите Jar > из модулей с зависимостями...
  4. выберите основной класс с помощью кнопки обзора
  5. нажмите переключатель рядом с " извлечь в целевую банку "и нажмите"ОК"
  6. нажмите"+", затем выберите"тестовый выход модуля"
  7. в доступных элементах панель справа, разверните имя проекта и выберите все файлы Maven, затем переместите их в каталог jar, создаваемый в левой панели
  8. нажмите "OK"
  9. Выберите Построить > Построить Артефакты... из верхнего меню
  10. наведите курсор на созданную банку и нажмите "построить" в разделе Действия

Примечания:

  1. обязательно добавьте драйвер 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 перейдите к параметрам Интернета... > Безопасность (вкладка) > флажок Включить защищенный режим)