web-dev-qa-db-ja.com

Maven / Surefireが実行するテストを検出しません

私の知る限り、テストファイルの場所は正しいです。

「mvntest」を実行すると、SomethingTestという名前の4つのクラスが見つかります(これらは「test」フォルダーにあります)。

ただし、jUnitテスト(@Testアノテーションが付けられたjUnit 4)はすべて無視されます。

これをデバッグするにはどうすればよいですか?

編集-これは、含まれているjUnitの間違ったバージョンに関連している可能性があります。 「mvn-X」を実行するとこれが表示されます

[DEBUG] Retrieving parent-POM: org.codehaus.plexus:plexus:pom:1.0.4 for project: org.codehaus.plexus:plexus-containers:pom:1.0.3 from the repository.
[DEBUG]       org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:runtime (selected for runtime)
[DEBUG]         junit:junit:jar:3.8.1:runtime (selected for runtime)
[DEBUG]         org.codehaus.plexus:plexus-utils:jar:1.0.4:runtime (removed - nearer found: 1.4.1)
[DEBUG]         classworlds:classworlds:jar:1.1-alpha-2:runtime (selected for runtime)

ルートpomでの最初の依存関係はjUnit4.8.1ですが、何らかの理由でjUnit3.8.1が含まれています。

編集2-わかりました、これは答えではないようです。テストクラスパスには、正しいjUnit(4)と私のテストクラスが含まれています。

編集-SomethingTesterという名前のテストクラスがありました。 SomethingTestに変更すると、機能しました。 Surefireのインクルードパターンを確認しましたが、SomethingTesterをキャッチするように構成されていませんでした。ドー。

14
ripper234

多分これが問題です:

mvn -Xはこれらの束を出力するので、それが上記のものであるかどうかを判断することができます-正しいJUnitバージョンを使用しないなど(たとえば、クイックスタートアーティファクトから作成する場合、デフォルトは3.8.1だと思います) 、JUnitなどの前のクラスパスにTestNGがある。

編集:私はこれを単純なプロジェクトと上記のリンクで与えられたクラスで試しましたが、うまくいきました。私はjunitバージョン4.8を使用しました。これは、私のプロジェクトの唯一の依存関係です。確認のために、@ org.junit.Testでテストメソッドに注釈を付けており、これらのメソッドにはいくつかのorg.junit.Assert.assertXXXステートメントがあります。

編集2:junitを他のバージョンに変更するには、次を使用します。

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8</version>
  <scope>test</scope>
</dependency>

編集3:テストクラスパスに次のようなものが必要です。

[DEBUG] Test Classpath :
[DEBUG]   /home/icyrock/Java/prb/target/test-classes
[DEBUG]   /home/icyrock/Java/prb/target/classes
[DEBUG]   /home/icyrock/.m2/repository/junit/junit/4.8/junit-4.8.jar
[DEBUG]   /home/icyrock/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar
[DEBUG]   /home/icyrock/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar
[DEBUG]   /home/icyrock/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar

編集4:OK、Mavenクイックスタートアーティファクトを使用してテストプロジェクトを作成し、内部に2つのモジュール(クイックスタートアーティファクトを使用して作成)を追加し、ソース/ターゲットJavaバージョンとjunit:junit:4.8依存関係を追加しました親pomのみに変更しました。テストの1つだけをJUnit4に変更しました(もう1つはデフォルトでJUnit3であり、クイックスタートが生成するものです)、mvn clean test親フォルダからは問題なく動作しました。

これはおそらくプロジェクトのセットアップの問題です-プロジェクトが正しく配線されていることを確認できますか(つまり、モジュールが親を指している、親/子プロジェクトのグループ/アーティファクト/バージョンが正しい)。私の頭に浮かぶ他の唯一のことは、mavenリポジトリー(少なくともorg/Apache/maven)をクリーンアップすることですが、それが役立つとは思えません。

より単純なプロジェクトでテストするのが賢明かもしれません。

5
icyrock.com

Icyrock.comの質問を終了します。 target/test-classesにコンパイルされたテストクラスがない場合は、pomファイルをチェックして、パッケージが「pom」でないことを確認します。

2
Raymond