2016-04-15 23 views
1

私は、私は、Eclipse内でそれらを実行JUnitテストの違いを持っ​​ているし、彼らは達人で実行されたときに確実なplugingは私が右のEclipseでsrc/test/javaをクリックして一つのプロジェクト、上の端末mvn clean installとeclipseが実行するjunitテストが異なるのはなぜですか?

からmvn clean installをやって、JUnitはそこに私に語りました137回のテストが実行されます。 mvn clean installを実行すると私には119しか与えられません。これは、テスト名の場合は小文字で始まらないテストの可能性があると思われますが、これで確実に無視されますが、それ以外の説明はありますか?

2番目のプロジェクトでは、もっと厄介な問題があります。つまり、テストパッケージ全体がmvn clean installで実行されていません。 src/test/javacom.projectcom.project.servicesの下に2つのパッケージがあります。 com.projectのテストクラスは、com.project.servicesのものではなく、確実に正しく実行されます。

public class ActualTestsCasesA extends GenericTestSituationA {} 

public class GenericTestSituationA extends ServicesAbstractTests {} 

public abstract ServicesAbstractTests extends ProjectAbstractTests {} 

ActualTestsCasesAGenericTestSituationAServicesAbstractTestsはすべてcom.project.servicesテストパッケージの下にある:私は見ることができます

唯一の特異性は、com.project.services下のクラスは継承のいくつかのレベルを持っています。 ProjectAbstractTestsは他のMavenプロジェクトにとどまります。ここで

は私のpom.wmlで確実なプラグインに依存関係です:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding> 
      </configuration> 

     </plugin> 
+0

これは 'mvn help:effective-pom'は各環境で実行すると異なる結果を返しますか? –

+0

pom.xmlのeclipseの有効なpomタブを見ると、surefire-pluginの部分は両側で同じです。 –

+1

ユニットテストの名前を確認してください。 '* Test.java *'のような単体テストの命名規則に従っていますか? – khmarbaise

答えて

1

すでに発見されたとおりのテストを実行するとき、シュアは、特定の命名規則があります。ただし、自分のプロジェクトのテストファイル名に合わせて追加のナミニッヒ規則を設定することはできます。これは、Maven標準を遵守していなかったレガシーテストや、リファクタリングではなく、テストクラスの大きなスイートに役立ちます。

は、詳細については、確実なドキュメントをチェックアウト:あなたのケースではhttp://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

を、あなたはそのような追加のパターンでテストクラス含めるシュアを設定できます。

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding> 
      <includes> 
        <include>**/*Tests*.*</include> 
        <include>**/*TestSituation*.*</include> 
      </includes> 
      </configuration> 

     </plugin> 

Eclipseを、しかし、バインドされていませんそのような制限によって。代わりに、テストを実行するためのjunit4ライブラリの存在に依存し、jUnit自身がクラスが実行可能なテストと見なされるかどうかを判断できるようにします。もう少し詳しくは、Eclipse Mars docsを参照してください。

関連する問題