2017-02-13 5 views
0

Specflowデータは、テーブルを使用してフィーチャファイル内のシナリオで表現できます。フィーチャファイルからのspecflowデータの集中化?

シナリオが多い場合は、データを見つけて変更するのが難しいと思います。

シナリオごとにフィーチャファイルにデータを埋め込むパターンがありますか? つまり、リポジトリを使用して多くの機能にわたってデータを集中化するにはどうすればよいですか?

+0

私はあなたの質問を2回読みましたが、私はあなたが何を求めているかまだ分かりません。複数のシナリオを同じ機能ファイルにダンプできるかどうかを確認していますか? – sashoalm

答えて

1

あなたが質問を書いた方法を見てみると、あなたはSpecflowを初めて使うようです。

問題は、Specflowはプログラミング言語ではないということです。実際には、その言語コンポーネントのいくつかは、あなたが最初にそれを見始めるときに邪魔になることがあります。

BDD方法論を正しく実行している場合は、フィーチャーファイルを作成するプログラマーではありません。それはビジネスの人々でなければならない、それが言語がとてもオープンである理由です。フィーチャーとシナリオの名前を付けるだけのプレースホルダーと、セットアップアクション(与えられたもの)、操作(いつ)、テスト(次に)であるかを示すための各行の先頭の簡単な単語。

たとえば、開発者として次の例を考えてみましょう。

Feature: Waking kids up for school 
Scenario Outline: When its a school day 
    Given it is a <day> 
    When it is <time> for <child> to get up 
    Then <Mum> should wake me up 

Examples: 
    |child |day|time |parent| 
    |daughter|mon|06:30|mum   | 
    |son  |mon|06:30|mum   | 
    |daughter|tue|06:30|mum   | 
    |son     |tue|06:30|mum   | 
    |daughter|wed|07:00|dad | 
    |son     |wed|07:15|dad | 
    |daughter|thu|07:00|dad | 
    |son  |thu|07:15|dad | 
    |daughter|fri|07:30|dad   | 
    |son  |fri|07:35|dad   | 

そして、この例では、異なる親が週または何の異なる時間や日数を好むと私たちの(架空の)家庭の日常のすべての複雑さをカプセル化します。

しかし、その一方で、私も複雑さがシナリオに反映する必要はありませんので、これは、必要だったものをすべて取り込むことができ

Feature: Waking kids up for school 
Scenario: When its a school day 
    Given it is a school day 
    When it is time to get up 
    Then my parent should wake me up 

を書くことができます(私の子供たちが目を覚ますとき、真剣に気遣います彼らが学校に通っている限り!)。

しかし、あなたは複雑さを必要とする場合、あなたはあなたのコードを構造化するので、もし彼らがすべて同じであるので、Binding sがグローバルであることを忘れないでください、あなたのテストコードに

[Binding] 
public void GivenItIsASchoolDay() 
{ 
    ScenarioContext.Current["Day"]="Wed"; 
    ScenarioContext.Current["Time"]="07:00"; 
    ScenarioContext.Current["Parent"]="Mum"; 
} 

を、それを定義することができます場所、あなたはすべて集中化してしまった。