2017-08-08 19 views
0

キュウリのタグ@Beforeを使用して、そのファイル内にリストされているステップのセットアップ方法を持っています。しかし、私はCucumberの現在の実行にそのファイル内にリストされているステップが含まれている場合にのみ、このメソッドを実行します。キュウリの「セットアップメソッド」は、そのクラスのステップが実行された場合にのみ実行されます。

現時点では、実行中のシナリオがファイル内のステップ定義を実行しようとしても、指定されたすべての@Beforeメソッドが実行されます。

したがって、たとえば:

public class StepDefA { 
     @Before 
     public void setupA() { 
      // do setup 
     } 

     @Then("^some step$") 
     public void thenSomeStep() { } 
    } 

    public class StepDefB { 
     @Before 
     public void setupB() { 
      // more setup 
     } 

     @Then("^some other step$") {} 
    } 


Scenario: 
Then some step # setupA and setupB both run 

問題は、私は唯一の「いくつかのステップ」を実行するにもかかわらず、setupBが実行されていることです。実行されているステップがそのファイルにあるので、setupAだけを実行します。これを回避する方法はありますか?

答えて

1

あなたはこのように、タグ付けされたフックにを使用して試みることができる:

... 

public class StepDefB { 
    @Before("@tag") 
    public void setupB() { 
     // more setup 
    } 

    @Then("^some other step$") {} 
} 

... 

その後、.featureファイル内にあなただけの@tagとのシナリオにタグを付けます。

Feature: Test feature 

    @tag 
    Scenario: Test scenario with setupB 
    ... 
    Then some other step 

ここで、setupB()は、そのシナリオでのみ実行する必要があります。

あなたはまた、StepDefB内部ONYフックせずにメソッドを作成し、ちょうど何かの前段階のコード内でそのメソッドを実行できます。その後、

public void setupB() { 
    // more setup 
} 

と:

@Then("^some other step$") { 
    setupB(); 
} 

は、あなたがそれを得るホープワーキング。

関連する問題