StackOverflowや他の多くのサイトを調査し、他の多くの関連する投稿を見つけて、上記のすべての提案に従いましたが、結局、failsafeはテストをスキップしています
私のJUnitテストはここにあります:myModule/src/main/test/Java/ClientAccessIT.Java
このモジュールには単体テストがないので、私はスキップしている確認します:
<!-- POM snippet -->
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
そして、私はfailsafeで統合テストを実行しようとしています:
<!-- POM snippet -->
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>run-tests</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
ただし、mvn verify
を実行すると、次のように表示されます。
[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (run-tests) @ rest-services-test ---
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
私は最後の4時間半の精練に費やしました、どんな助けでもありがたいです。言及する価値がある他の唯一のことは、私が Cargo を設定して、Tomcatコンテナを分解することです。誰かが明白な問題を見ていますか?
テストクラスの名前を変更する必要があります。
@acdcjuniorで指摘されているように、プラグインがデフォルトで検索する名前は ドキュメント にあります。
デフォルトでは、Failsafeプラグインは、次のワイルドカードパターンを持つすべてのテストクラスを自動的に含めます。
- 「
**/IT*.Java
"-すべてのサブディレクトリと、" IT "で始まるすべてのJavaファイル名が含まれます。- 「
**/*IT.Java
"-そのすべてのサブディレクトリとすべてのJava「IT」で終わるファイル名を含みます).- 「
**/*ITCase.Java
"-そのすべてのサブディレクトリとすべてのJava「ITCase」で終わるファイル名を含みます).
同様の問題がありました。 target/test-classesにコンパイルされたテストクラスがない場合は、pomファイルをチェックして、パッケージが「pom」でないことを確認してください。
テストがデフォルトのテストソースディレクトリsrc/test/Javaにありません。見る:
https://maven.Apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
myModule/src/main/test/Java/ClientAccessIT.Java
でなければなりません:
myModule/src/test/Java/ClientAccessIT.Java
また、pomファイルを更新して(テストをメインで実行したい場合)、以下を含めることもできます。
<build>
<testSources>
<testSource>
<directory>src/main/test</directory>
</testSource>
</testSources>
</build>
マルチモジュールプロジェクトの場合、子プロジェクトはプラグインを次のように宣言する必要があります。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
バージョンは親pomを継承します。上記の定義がないと、親pomのプラグインだけでは機能しません。
私も同様の問題を抱えていましたが、パッケージ要素を「ポン」にする必要がありました。テストソースファイルがコンパイルされ、maven-compiler-pluginを使用して.../target/test-classesフォルダーに追加されていることを確認します。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
私は同じ問題を抱えていて、ここで提案されたオプションのいくつかを試しました。私は、JUnit 5を使用してSpring Bootアプリケーションを開発しています。残念ながら、 プラグインのアドバタイズ に関係なく、統合テスト(src/test/Java
にあり、*TestIT.Java
のサフィックスが付いている)は選択されていません。私は 2.18.1、2.19.1へのダウングレード を試み、<executions>
セクションと<configuration>
セクションの両方を削除して、プラグインのデフォルト機能さえ使用しようとしましたが、うまくいきませんでした。
ようやくバージョンを最新(執筆時点)から2.22.0に、そしてビオラに変更しました。これが私のpomの<build><plugins>
セクションに追加した設定です。さらに良いことに、ほとんどの人が含むintegration-test
およびverify
目標を定義する実行を追加する必要はありません。フェイルセーフはデフォルトでこれらを実行します。 Mavenライフサイクルのtest
フェーズ中にユニットテストを実行するために使用しているので、確実なプラグイン構成も含めました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$-->
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$ -->
</plugin>
そして、良い目安として、surefireとfailsafeを伝えるために JUnit 5を使用するため 、これを<dependencies>
セクションに含めます。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
Eclipseは、バージョンタグの下に警告(黄色の波線)を表示するため、<!--$NO-MVN-MAN-VER$ -->
エラーが含まれます。これに対処するためのより良い方法があると確信していますが、この場合はそれでうまくいきます。
この構成のテストを高速化し、test
、integration-test
またはverify
フェーズでは、次のコマンドを使用してすばやく検証しました。
mvn failsafe:integration-test
(統合テストのみを実行)mvn surefire:test
(単体テストのみを実行)これが誰かを助けることを願っています。乾杯!
私にとっては、実行セクションがありませんでした
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
https://maven.Apache.org/surefire/maven-failsafe-plugin/examples/testng.html にあるTestNGでのフェイルセーフのドキュメントは、それがないとpomを示し、それは機能しませんでした。
<plugins>
[...]
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
[...]
</plugins>
上記の不足している実行セクションを追加すると、問題が解決しました。
私は多少似たような問題を抱えていました。統合テストが行われていませんでした。私のプロジェクトはマルチモジュールのスプリングブートプロジェクトです。そして私の間違いは、親POMにmaven-failsafe-pluginを追加したことです。多くのオプションをいじり回した後、フェイルセーフプラグインをモジュールpomに配置し、すべての統合テストが存在して問題を解決しました。
私のために、 surefire:verify
はテストを実行しませんでした。 surefire:integration-test
。