2011-10-17 15 views
6

JUnit 4テストスイートには、実行する必要がある順番で多数のテストクラスが含まれています。特定の順序)。maven-failsafe-pluginを使用してMavenでJUnit4テストスイートを実行

設定なしでmaven-failsafe-pluginを使用すると、テストは実行されますが正しい順序では実行されません。ただし、テストスイートを実行するようにプラグインを設定しても、テストは実行されません。

フェイルセーフプラグインを使用してテストスイートを実行することはできますか?もしそうなら、どこが間違っていたのですか?

コードは以下の通りです:

@RunWith(Suite.class) 
@SuiteClasses({ 
    TestCase1.class, 
    TestCase2.class, 
     ... 
    TestCaseN.class, 
}) 
public class IntegrationSuite { 
    //Do Nothing. 
} 

とのpom.xmlから:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <includes> 
      <include>IntegrationSuite.java</include> 
     </includes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>integration-test</id> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
    </execution> 
    <execution> 
     <id>verify</id> 
     <goals> 
      <goal>verify</goal> 
     </goals> 
    </execution> 
</executions> 
</plugin> 

感謝:)

答えて

10

フェイルセーフプラグインはバージョン2.7(かなり最近)以来runOrder (click)パラメータをサポートしています。多くのオプションはありませんが、順序を明示的に指定することはできませんが、アルファベット順に設定してテストクラスの名前を変更して実行順序を反映させることができます。

私はまた、テストがお互いに依存しているという事実が(テスト)コードの臭いです。保守不能なテストセットを開発し、その複雑さが人間の理解の上に浮上したときに最終的に放棄することへの短い道であるため、それは良くありません。さらに、1つの選択された実行パスの結果であるため、バグが公開されないことがあります。

ところで、私は二重のアスタリスクで、このようなテストを含めることを好む:

<includes> 
    <include>**/IntegrationSuite.java</include> 
</includes> 
+0

感謝を!テスト自体は、お互いに依存して動作するわけではありませんが、テストの詳細を書かれたドキュメントによって実行順序が決定されています... 私の決定ではありませんが、まだ実装する必要があります! –

+0

@HeavyMetalKid Surefire/Failsafeがどのようにテストケースを見つけたかに基づいて、スイートをサポートしていない可能性があります。私は、しかし、ハードな証拠を与えることはできません。 – MaDa

+0

私はあなたが正しいかもしれないと思うこの答えを探している間に私が読んだことから。 runOrder +アルファベットの命名アイデアを代わりに試してみるつもりです。ありがとう –

0

のmaven-確実な-プラグインは、コードの下としても使用することができます:あなたの答えのための

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.12.4</version> 
<configuration> 
<includes> 
<include>**/IntegrationSuite.java</include> 
</includes> 
</configuration> 
</plugin>  
関連する問題