2017-03-03 2 views
0
私は以下のような別のステップ定義実装からステップ定義の実装

キュウリ

@Given("^a user is logged into application with \"([^\"]*)\" and \"([^\"]*)\"$") 

public void a_user_is_logged_into_application_with_and(String arg1, String arg2) throws Throwable 
{ 
     open(); 
     login(arg1, arg2); 

    } 

下に呼び出すようにしようとしています

でJavaを使用して他のいくつかのステップの定義に1つのステップ定義から実装ステップを呼び出す方法:

@Given("^Run Add Business scenario$") 
    public void run_Add_Business_scenario() { 

     Given("a user is logged into application with 'clfmanager' and 'rules'"); 

    } 

と私はそれを行うことができません、とにかく私はこれを行うことができますか?

+0

キュウリではできませんが、あなたができることは、これら2つの機能を呼び出す別のステップを作成することです。 –

+0

ルビーでキュウリを使用するには、簡単です。私はキュウリのJavaに精通していますが、https://github.com/cucumber/cuke4duke/wiki/Calling-Steps-from-StepDefinitionsのようなものが見つかりました。これが役に立ちそうですか? – Chong

+0

なぜあなたは何をしたいのかを知ることができません。間違いましたか?何が起こったのかの詳細を分かち合うことは、より良い答えに役立ちます。 –

答えて

2

これは解決策ではありません。

あなたがすべきことは、両方のステップで使用するヘルパークラスを作成することです。これはキュウリで再利用し、重複を避ける方法です。

0

EDIT:Thomasは実際の正解を提供しました。実際の問題を解決する代わりに、問題を再現しようとしました。おかげさまでトーマス!

トーマスは正しいです。

@Given("Login with username (.+) and password (.+)") 
public void login(String user, String pass){ 
    // Login here 
} 

@Given("Login with defaults") 
public void loginWithDefaults(){ 
    login("defaultUser","defaultPass") 
} 

が/はその後、これらはまだちょうど方法であり、方法として使用することができたとき、私たちは/を考えると使用しているにもかかわらず、覚えている:それを拡大するには、以下のようなものを行うことができます。 canpan14 @

+0

この例は、別のステップからステップを呼び出す例です。これはまさにあなたがしてはいけないことです。私はなぜ答えが拡大します。 –

2

このソリューションを提案:

@Given("Login with username (.+) and password (.+)") 
public void login(String user, String pass){ 
    // Login here 
} 

@Given("Login with defaults") 
public void loginWithDefaults(){ 
    login("defaultUser","defaultPass") 
} 

は残念ながら、これは別のステップからステップを呼び出す例です。

私が提唱しています解決策は、より多くのようになります。

public class LoginSteps { 

    private LoginHelper loginHelper = new LoginHelper(); 

    @Given("Login with username (.*) and password (.*)") 
    public void login(String user, String pass) { 
     loginHelper.login(user, pass) 
    } 

    @Given("Login with defaults") 
    public void loginWithDefaults() { 
     loginHelper.login("defaultUser", "defaultPass") 
    } 
} 

再利用可能なロジックを持つヘルパークラス:

public class LoginHelper { 
    public void login(user, pass) { 
     // login logic lives here and can be referenced from multiple steps 
    } 
} 

最大の違いは、私が法にログインロジックを抽出していることですヘルパークラスで。これにより、わかりやすい1行のステップを書くことができます。

私はヘルパーメソッドを別のクラスに移動して、呼び出し元のステップクラスに関係なく、簡単に把握できるようにしました。