私の親ポンポンがに、JUnitの4 @Category
注釈のための私のインターフェイスcom.adam.testutil.IntegrationTest
を使用して、以下のよう<groups>
と<excludedGroups>
のparamsを定義maven-surefire-plugin
とmaven-failsafe-plugin
構成が含まれているために使用するサードパーティのライブラリのインターフェイスはありますどのテストにも統合テストとしてフラグを立てます。JUnitの@category()
pomの下にあるすべてのモジュール(統合テストを持つモジュールだけではありません)は、クラスパスにcom.adam.testutil.IntegrationTest
が必要になり、確実なプラグインとフェイルセーフプラグインが実行されます。そうでなければClassNotFoundException
がスローされます。
したがって、クラスはすべてのモジュールが依存関係として宣言しなければならないモジュール内になければなりません。私はそれを親のpom の依存関係として宣言して、すべてのモジュールが自動的に継承するようにしたいと思いますが、mvnの実行を停止する循環依存関係の問題が発生します。
モジュールにユニットテストや統合テストがなくても、モジュールは依然として依存関係を宣言する必要があります。
また、com.adam.testutil.IntegrationTest
のモジュールをビルド順に最初のモジュールにする必要があります。そうしないと、新しいシステムの初回インストールでは利用できなくなります。鶏肉と卵のジレンマがあります - IntegrationTest
の依存関係はまだローカルリポジトリにないので、空のリポジトリにmvn install
を実行するだけではありません。
実際、IntegrationTest
を提供するだけでは特に新しいモジュールを作成したくありません。 JUnitが適切なorg.junit.IntegrationTest
クラスをライブラリに含んでいれば、ずっと簡単になります。
@Cateogry
はテストに注釈を付けて統合テストとしてフラグを立てるのに最適な方法ですが、マルチモジュールプロジェクトではこれらの欠点がすべてあります。
自分で持っている代わりに使用できる適切な名前のインターフェイスがありますか?
最悪の場合のシナリオでは、JUnit @Category
、maven-surefire-plugin、およびmaven-failsafe-pluginに関する限り、JDKのインターフェイスを使用できます。 java.lang.Cloneable - 誰がコードを読んでいても、何が起こっているのだろうかと思います。
私はJUnitが何かを持っていることを望んでいましたが、役に立たないものは何も見つかりませんでした。
私は親のpomの第三者のライブラリに依存関係を置くことができ、すべてがうまくいくはずです。
私は、サードパーティ製のライブラリから適切なインターフェイスを提案してくれた人から答えを受け取ります。インターフェイスの名前は、コードを初めて読んだ人からすぐに質問をしません。
import org.junit.experimental.categories.Category
import com.adam.testutil.IntegrationTest
@Category(IntegrationTest.class)
public DbAndJpaIntegrationTests {
...
}
。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<excludedGroups>com.bp.gis.util.HeavyTest
</excludedGroups>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
<groups>com.bp.gis.util.HeavyTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
*問題は、プロジェクト内のすべてのモジュールがcom.adamに引っ張る依存性を有していなければならないことです。 testutil.IntegrationTest *ここで必要な依存関係は何ですか? – nullpointer
'IntegrationTest'が現在どこにあるのか、今のところあなたのモジュール構造は何を使用しているのかについて詳細を教えてください。 – nullpointer
私はあなたの質問に答えるために質問を言い換えました。 – Adam