2016-12-29 10 views
1

クラスとメソッドの両方を並列に実行しようとしています。例えばTestNG parallel classesとXMLのないメソッド

方法は

public class MethodTests(){ 

    @Test(groups = "testMe") 
    public void methodTestOne(){ 
    ... 
    } 

    @Test(groups = "testMe") 
    public void methodTestTwo(){ 
    ... 
    } 

} 

クラス テストテスト - >私はクラスレベルでのテストの注釈はそれを

@Test 
public class ClassTests(){ 

    @Test(groups = "testMe") 
    public void classTestOne(){ 
    ... 
    } 

    @Test(groups = "testMe") 
    public void classTestTwo(){ 
    ... 
    } 

} 

を行う望んをveにはsurefire-pluginが含まれています:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <parallel>all</parallel> 
       <threadCount>${threads}</threadCount> 
      ... 
</plugin> 

注:

mvn clean verify -Dgroups=testMe -Dthreads=3 

私はclassTestsが動作を達成しようとしている:私も、私は、このようなコマンドラインから実行しているよclassesAndMethods

を試してみました1つのスレッドであり、メソッドテストは完了後に別のスレッドを使用します。

目的: beforeClassでは、テストを設定してから、ページ上に複数のものを素早くアサートします。失敗した場合でも、ページ上の他のものをテストします。

ここで、メソッドテストが失敗した場合は、完全に停止する必要があります。

どちらのシナリオも必要ですが、私はXMLを使用したくありません。

答えて

1

私はこのユースケースをよく理解していません。しかし、TestNGでサポートされている並列処理の唯一の組み合わせは次のとおりです。

  • tests - タグ内の@Testメソッドを並列に実行させます。
  • instances - テストクラスインスタンス内の@Testメソッドを並列に実行させます。
  • classes - パラレル
  • methodsで実行するテストクラスを原因は - 私はallと呼ばれるものを見て覚えていけないパラレル

で実行するために、複数の@Testメソッドが発生します。私はそれがMaven surefireプラグインのJUnitプロバイダにのみ適用可能だと思います。 hereをご覧ください。

@BeforeClass(alwaysRun=true)がある限り、すべてgroupsに対して実行され、前のクラスに依存するテストメソッドがスキップされることはありません。あなたが使用する必要があります

値は、このようなclasses、次のとおりです。<parallel>classes</parallel>

+0

恐ろしい、どうもありがとうございました。 あなたが提供したリンクは素晴らしかったです。 "TestNGは、お互いに依存するメソッドを除き、すべてのテストメソッドを別々のスレッドで実行しようとします。 – Will

関連する問題