2011-08-04 6 views
6

これが私たちの受け入れテストの1の例である:SpecflowでBDDスクリプティングのアンチパターンにどのように対処していますか?

Feature: Add an effect to a level 
In order to create a configuration 
As a user 
I want to be able to add effects to a level 

Scenario: Add a new valve effect to a level 
Given I have created a level named LEVEL123 with description fooDescription 
And I am on the configuration page 
When I click LEVEL123 in the level tree 
And I expand the panel named Editor Panel 
And I click the Add Valve Effect button 
And the popup named ASRAddVal appears 
And I click the Add new button 
And I fill in these vertical fields 
    | field name | value    | 
    | Name  | Effect123   | 
Then I should see the following texts on the screen 
    | text      | 
    | Effect added : EFFECT123 | 

私たちは、これは少し冗長にするためになっていると我々はあなたがSpecflowの手順を減らす方法を聞きたいと思っています。私が今までに読んだことから、特定の再利用不可能なステップを作成することは推奨されません。したがって、SpecFlowでこれを行う際に "ベストプラクティス"とは何か考えられますか?

更新:

私が言うことをしようとしている何が、私はあなたが複数のテスト間でそれらを再利用するために、一般的な手順を作成しようとする必要があることを学んできたということです。これを行うための1つの方法は、ステップをパラメータ化することです。たとえば、「私は..という名前のレベルを作成したとしますが、パラメータ化によって冗長性が導入されます。私はBryan Oakleyのようなもので解決したいと思っていますが、各テストに非常に特有のステップを作成せずにどのように行うことができないのか分かりません。これは、メンテナンス性を低下させる多くのステップで終わることを再度意味します。私はSpecFlowのように "ステップ"と呼ばれる基本クラスを継承するファイルを作成することによって略語のステップを定義するいくつかの方法がありますが、これはまだ新しいステップを紹介しています。

要約すると、維持可能なBryan Oakleysの答えに結びつくための良いアプローチを示してください。

答えて

9

私はこのような何かにそれを簡素化するだろう:私は問題にアプローチし

Scenario: Add a new valve effect to a level 
Given I have created a new level 
When I add a new valve effect with the following values 
    | field name | value    | 
    | Name  | Effect123   | 
Then I should get an on-screen confirmation that says "Effect added: Effect123" 

の方法は、あなたが完全にユーザーインターフェイスを再設計されていることを想像していました。テストはまだ使えますか?たとえば、再設計に「追加」ボタンがない場合、またはユーザーがポップアップウィンドウを使用しなくなった場合でも、テストは機能するはずです。

+0

[OK]しかし、どのようにして非常にテスト固有のステップに進むのですか?今まで理解してきたことから、テスト固有の手順を避けるべきです。 – Marius

+0

@マリアス:私はあなたの質問を理解していません。当然のことながら、「何かが次の値を持つ新しいバルブエフェクトを追加するとき」のように、テストに固有のものでなければなりません。ユニークなものがなければ、テストのポイントはありません。一方、これらのステップはすべて、他のテストでも使用される可能性があります。たとえば、「新しいレベルを作成した場合、新しいレベルを削除すると...」と表示されます。または、「新しいバルブエフェクトを追加すると、エラー「無効なフィールド名」などが表示されます。 –

+0

私の問題について詳しく説明しました。質問の更新を参照してください。 – Marius

0

一般的に言い換えて、パラメータを使用してみることができます。

Given i have create a new: Level 

「:」は、パラメータを識別できるだけのものです。これは、新しいものを作成する必要があるステップのための1つの汎用エントリー・ポイントを持つことを意味します。 Levelのパラメータを見て、新しいレベルを作成するためのステップまでです。

誰もが使用できる名前付け変換を試してみてください。どのステップがすでに作成されているかを発見するのは簡単なので、同じような手順が重複しないようにする必要があります。

0

あなたがテストしているコードが単体テストに入る必要があるかもしれません。 「テスト固有」とは、受入テストでカバーされていない単体テストのことです。

ちょっと考えました:)

関連する問題