2016-03-31 27 views
0

私は20歳以上のユニットテストを書いていますが、私はガーキンを初めて使っていますが、このようなものになる.featureファイルのストーリーを実装するという課題がありました。シナリオ間のガーキン状態の維持

Scenario: a 
    Given that the app is open 
    When I open a certain dialog 
    Then it has a thing somewhere 

Scenario: b 
    Given that the dialog from 'a' is open... 

# Imagine here a long chain of scenarios, each depending on the previous 

Scenario: n 
    Given that the previous 'n' steps have all completed.... 

つまり、シナリオは長く、長い連鎖であり、それぞれ前身が設定したシステムの状態によって異なります。

これは単体テストに慣れていた人にとっては気にしませんが、これらのシナリオは分割されずに別々に実行されることはありません。

ここでベストプラクティスは何ですか?

非常に長いシナリオに書き直すべきですか?

私はすでにステップ定義から自分のコードの大部分を守るために「ページオブジェクト」を使用しています。後のシナリオで再利用できる単一コールとしてステップをコーディングする必要がありますか?

私はJucascriptでCucumberを実行しています。最初

答えて

1

まず、物事、警告:テストの大半については

(と過半数で、私は時間の99.9%を意味する)、あなたは前のシナリオからのキャリーべきではない、なぜなら、実際の1つのシナリオがあなたのフィーチャーで失敗した場合、それらを一緒にストリングしようとしたために、より多くのものが崩れることになります。あなたがその最初のシナリオの複数を再利用するかどうかは、(同じ機能以内)した後、あなたのすべてのシナリオのために設定しようとしているかどうかに応じて

、または:

そして、私の答えに上(別々の機能では)2つのうちの1つを実行できます。

  1. 最初のシナリオは、バックグラウンド
  2. は、複数の特徴ファイルまずに関して

で使用するために、ステップの定義に最初のシナリオを作成してください:

Background: 
    Given that the app is open 
    When I open a certain dialog 
    Then it has a thing somewhere 

Scenario: a 
    Given that the dialog from 'a' is open... 

だけバックグラウンドとして使用すると、その機能内の次のすべてのシナリオで使用されることに注意してください。秒間

Scenario: a 
    Given that the app is open 
    When I open a certain dialog 
    Then it has a thing somewhere 

Scenario: b 
    Given I have opened the dialogue from a 
    And the '<DialogFromA>' dialog is open... 
+3

私は99.99%の時間に同意します。あなたが前のシナリオから州を使用することがOKだと思う時間の0.01%の間、私は同意しません。ちょうど私の独断的な意見。その状態では、シナリオはグリッド上ではなく特定の順序で実行する必要があります。 –

+2

私が推奨する唯一の時間は、新しいシナリオが依然としてCIで受け継がれるように、前のシナリオのステップ定義をまだ開発しているときです。 完璧な世界では、以前のシナリオのステップ定義が書かれていますが、ジュニターテスターが大学の新聞に書き込まれていて、おそらく言語を完全に理解していない可能性があります。 ステップ定義が作成された後、または前のシナリオがバックグラウンドに変換されると、それは廃止され、したがって、_correct_に変更されます。 –

+0

ありがとう、@KyleFairns - 私は、この機能に非常に長い一連のシナリオがあり、それぞれが前任者に依存していることを強調するために質問を編集しました。 – LeeGee

1

私はすべての手順の背後にある実際の行動は何で、自分自身に尋ねるでしょうか?

私はそれを望みの振る舞いとして実装し、スタックの下の階段の間で命令をプッシュします。おそらく、1つまたは複数のヘルパークラスを使用しています。シナリオの順序を強制的に強制して強制的に強制することは何も言いません。

BDDとキュウリはすべて人間が読めるコミュニケーションに関することです。あなたが求めている依存関係は、私の意見では、サポートコードGherkin triggersで実装する必要があります。

+0

"BDDとキュウリは人間が読めるコミュニケーションに関するものです。" ---それはトランプカードだと思います、ありがとうございます。 – LeeGee

関連する問題