2016-09-23 6 views
0
Scenario: As a user, I want to login to the system 
Given I am on my website 
When I enter valid credentials 
Then I am taken to the home page 

getName()機能を使用してシナリオ名を取得できます。ステップが実行される方法もありますか(Java)?私たちは、これをロギングとレポート作成に使用することを予期しています。キュウリでは、実行中のステップをプログラムで取得することは可能ですか?

したがって、上記のシナリオでは、対応するステップ定義の実行中にI am on my websiteが返されます。

答えて

1

この問題は、ステップ全体をパラメータとしてステップ定義にラップすることで解決しました。言い換えれば、ステップ

Given I am on my website 

'Given I am on my website' 

に変換し、ステップの定義は、実際に私はCucumberWithSerenityレジスタを考えるステップ

@And("(.*)") //plus something specific to map step 
    public void Initialization(String step) throws Exception { 
      //do something with step 
    } 
+0

別の代替は、([QAFガーキンクライアント]でありますhttps://qmetry.github.io/qaf/latest/gherkin_client.html)には、[ステップリスナー](https://qmetry.github.io/qaf/latest/qaf_listeners.html#teststep-リスナー)を使用することができます。 – user861594

0

手順When I enter valid credentialsが実行されたことを示すログを取得できるかどうかを確認していますか?

もしそうなら、答えはイエスです。

キュウリにはロギングの概念がないため、独自のお気に入りのロギングフレームワークを追加する必要があります。 Cucumberはお気に入りのログフレームワークを介してログを記録することを知らないので、Javaで実装する各ステップでログステートメントを追加する必要があります。

私は自分自身をログに記録する必要性を見たことがありません。 Mavenからの実行ログ、またはあなたが使っているビルド・ツールは、私にとっては長年にわたって十分でした。

レポートには、ケースがカバーされるように実行されるステップが含まれています。

0

初心者の方はコメントできませんので、ここではcucumber-jvmを使用していることを前提にしています。

短い答え、いいえ、キュウリだけではステップ名を読むことはできません。メソッド名を使用して、呼び出されたものを識別することができます。

また、@BEFORE STEP/@AFTER STEPタグはまだ使用できないため、各ステップの呼び出しを定義する必要があります。

https://github.com/cucumber/cucumber-jvm/pull/838#issuecomment-234110573

かのJUnitやTestNGのようなテストフレームワークを使用すると、実行の詳細にアクセスしてみましょうことができ - このような何か: http://junit.org/junit4/javadoc/4.12/org/junit/rules/TestWatcher.html

本当にレポートの目的でステップ名が必要な場合は、テストフレームワークが生成するxmlレポートを解析するだけで済みます。

0

あなたは

When I log in with the user 'user' and the password 'password' 

のようなステップを追加し、ログイン

を必要なときにあなたが必要とするすべてのランナーが使用するパッケージでステップ定義を含むクラスを配置する必要があり、この手順を繰り返してできましたログイン。

1

に対応する文字列パラメータを受け付けます現在のステップ名を格納するListener。

あなたのテストランナーでこれを試してください:あなたのステップで

//import net.serenitybdd.cucumber.CucumberWithSerenity; 
@RunWith(CucumberWithSerenity.class) 
@CucumberOptions(... 

そして:

//import net.thucydides.core.model.TestStep; 
//import net.thucydides.core.steps.StepEventBus; 
if (!StepEventBus.getEventBus().isBaseStepListenerRegistered()) { 
    return "Unknown"; // CucumberWithSerenity is required. 
} 
String currentStepDescr = StepEventBus.getEventBus().getCurrentStep() 
    .transform(TestStep::getDescription) 
    .get(); 

依存関係:

<dependency> 
    <groupId>net.serenity-bdd</groupId> 
    <artifactId>serenity-core</artifactId> 
    <version>${serenity.version}</version> 
</dependency> 
関連する問題