web-dev-qa-db-ja.com

Selenium / TestNG JavaファイルからIntelliJを使用して実行可能なjarファイルを作成するにはどうすればよいですか?

私はこれを行う方法を理解しようと何日もグーグルしてきました、もし誰かがこれをやったことがあれば、私は助けに大いに感謝します。

IntelliJで作成した自動化テストプロジェクトがあり、ユーザーがWebアプリケーションを操作するのを自動化します。

その自動テスト(Javaで作成され、SeleniumとTestNGを使用)を実行可能なjarファイルに入れて、他の人がjarファイルをダブルクリックして実行できるようにしたいと思います。

プロジェクト構造->アーティファクト-> +-> Jar->依存関係のあるモジュールから移動してjarファイルを作成しようとするたびに、それを要求するjarが作成されます。

"Could not find or load the main class <package.MainClass> "

次のコマンドで実行しようとすると:

Java -jar MyProject.jar <Manifest Path>

なぜこのエラーが継続的に発生するのか、またはこれを正常に実行する方法があるのか​​、何か考えはありますか?

また、これが私のpom.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>
10
urbanaut

私はついにこの問題に遭遇した他の誰かのためにそれを理解しました、これは私がjarファイルを作成して正常に実行する方法です...

Pom.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ファイルを作成する手順は次のとおりです。

  1. トップメニューから[ファイル]> [プロジェクト構造...]を選択します
  2. 左側のメニューで「アーティファクト」を選択し、「+」をクリックします
  3. [Jar]> [依存関係のあるモジュールから...]を選択します。
  4. 参照ボタンを使用してメインクラスを選択します
  5. 「ターゲットjarに抽出」の横にあるラジオボタンをクリックし、「OK」をクリックします
  6. 「+」をクリックして、「モジュールテスト出力」を選択します
  7. 右側の[使用可能な要素]ペインで、プロジェクト名を展開し、すべてのMavenファイルを選択してから、左側のペインで作成されているjarディレクトリに移動します。
  8. 「OK」をクリックします
  9. トップメニューから[ビルド]> [アーティファクトのビルド...]を選択します
  10. 作成したjarにカーソルを合わせ、[アクション]の下の[ビルド]をクリックします

ノート:

  1. 必ずIEまたはChromeドライバーをプロジェクトリソースフォルダーに追加し、コンピューターのハードドライブではなく、コードフォルダーから呼び出してください。たとえば、 、 これを行う:

    ファイルfile = new File( "src\test\resources\binarys\IEDriverServer.exe");

これではない:

File file = new File
("C:\\Users\\<Username>\\<Proj Name>\\src\\test\\Java\\src\\
  test\\resources\\binaries\\IEDriverServer.exe");

次に、jarがコンピューターに保存されているのと同じフォルダーに、ドライバーを含む同じディレクトリを作成します。

src
TestAutomation.jar

2。 IEを使用している場合は、すべてのゾーンに保護モードが設定されているか、ゾーンのいずれにも設定されていないことを確認してください(IEでは、[インターネットオプション...]> [セキュリティ](タブ)> [保護モードを有効にする]チェックボックスに移動します)

8
urbanaut