web-dev-qa-db-ja.com

Maven Surefireを使用して、依存関係jarに含まれるJUnitテストを実行します

Mavenリポジトリにjunitテストを含むjarがあります。これは、プロジェクトを検査してその特定の機能をテストできるため、さまざまなプロジェクトで実行する必要があります。残念ながら、surefireはjarに含まれているテストを取得しません。これは 機能リクエストが示す です。

機能リクエストでは、jarを解凍して、surefireで実行することを提案しています。

Maven-dependency-pluginを使用してjarを正常に解凍しましたが、含まれているテストは実行されません。これは、jarを解凍するようにmaven-dependency-pluginを構成した方法です。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>de.mwx.test</groupId>
                        <artifactId>Selenium-test-base</artifactId>
                        <version>0.1</version>
                        <overWrite>true</overWrite>
                          <outputDirectory>
                              ${project.build.directory}/classes
                          </outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

どんな助けでも適用されるでしょう。

23
devsnd

別のjarからMavenでテストを実行する方法があります。 maven-surefire-pluginバージョン2.15から、テストjarをスキャンしてテストを実行するようにmavenに指示できます。テストjarを抽出する必要はありません。テストjarに依存関係を追加するだけで、次のことができます。

<plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <dependenciesToScan>
                <dependency>test.jar.group:test.jar.artifact.id</dependency>
            </dependenciesToScan>
        </configuration>
    </plugin>

https://Gist.github.com/aslakknutsen/4520226 そして https://issues.Apache.org/jira/browse/SUREFIRE-569 からこのようなものを取りました

予想通り、これはJUnitとTestngで機能します。おそらく、surefireが実行できるものなら何でも機能します。

39
galusben

(これは、上記のkhmarbaiseからのコメントの内容を言い換えているだけですが、明確にされていないため、言い換える価値があると思います):

OutputDirectoryとしてclassesフォルダーの代わりにtest-classesディレクトリを使用します。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>de.mwx.test</groupId>
                        <artifactId>Selenium-test-base</artifactId>
                        <version>0.1</version>
                        <overWrite>true</overWrite>
                          <outputDirectory>
                              ${project.build.directory}/test-classes
                          </outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
3
Eric Pabst

この問題で説明されているように、テストjarにないプロジェクトに含まれているスイートが必要です。

1
khmarbaise