2012-01-27 11 views
14

私は弊社のウェブサイトにいくつかの煙のテストを実施しています。その時にテスト - 私は "いつ"が必要ですか?

私は、既存の自動受諾テスト/ユーザーストーリーのためのギブン/時/後の形式を使用しています。しかし、今、私は初期のスモークテストやりたい:

Given I'm on the homepage

Then I should see "Welcome To The Site"

を私は何かが足りないのですか?それはいつも持っていない "ok"ですか?使用さ

ツール:MVC3、SpecFlow、NUnitの、Watin

答えて

18

、与えられた、ときまたはその後のいずれかを省略する完全に有効な構文である -

(さらには、任意の順序でそれらを混合するspecflowは気にしませんが。)

しかし、読みやすさのために、省略するのではなく、私は頻繁にするとテストのアクションが何であるかを示すことになっているので、私は、与えられたセクションを省略することを好むすなわち、

When I view the homepage 
Then I should see "Welcome To The Site" 

を考えると言い換えた場合。

ステップバインディングのコードが同じで再利用したい場合は、指定したmyとwhenを同じメソッドにバインドできます。

[Given(@"I'm on the homepage"] 
[When(@"I view the homepage"] 
public void NavigateToHomePage() 
{ 
    ... 
+1

実際にSpecflowは、Given/when/then属性にバインドしている限り、Given、WhenまたはThenのステップに名前を付けるかどうか気にするようには見えません。単語の選択は味であり、順番にステップを実行するように見えます。 – perfectionist

+0

完璧主義者が言うように。 specflowは、フィーチャー・ファイルに記載されている順序でステップを実行するだけです。それはあなたが使用する属性についてはあまり気にすることができませんでした。 –

+1

Doh - コメントに改行はありません! When-stepsを使用して、テストしているアクションを明確にマークすることをお勧めします。アレンジアサーションアサートのように。 –

-3

いつでも必要はありません。 Given/When/Thenのようなキーワードを考えるのが好きです

Given - これは準備のステップです。テストを実行するために必要なことを実行します。 When - これはテストで確認されるアクションです。 Then - これは、Whenステップで実行されたアクションに基づいてテストを検証する場所です。

以前の提案と同じように、実行順序にのみ影響します。スレッドの復活のための

+0

本当に「あなたにはいつも必要なの?なぜそれを考えるのか説明できますか?あなたの答えの残りの部分は、「いつ」が重要であると思われるようです。 –

-1

謝罪...

私はおそらくに行っていると思います:

Given there is a homepage 
When I view the homepage 
Then I should see "Welcome To The Site" 

私は、各Scenario内の少なくとも1つのGivenWhenThenを維持したい - ありませんAndButを使用することもできます(このシナリオに特に関連しているわけではありません)。 *で箇条書きスタイルのリストを作成するだけでもできます。

11

あなたは本当にここでポイントを逃していると思います。あなたはいつもにはWhenが必要です。それはあなたがテストすべきことです!除外できるものは、Givens

です。

When I visit the homepage 
Then I should see "Welcome To The Site" 

Given When Then本当にステートマシンを表現するよりよい方法です。私がやりたい何

Given some initial state (in your case, non) 
When I perform some action (in your case, visiting the homepage) 
Then I have some final state (in your case, text displayed to a user) 

Whenが起こることを可能にするために存在していなければならないすべての事について考えることです。あなたのケースでは、初期状態がないようです。しかし、あなたがいくつかのWebアプリケーションを持っていた場合は、ホームページにアクセスする前に初期状態にする必要があります(ユーザーがログインしていることを確認する必要があります)。

Given a user (user must be stored in the database) 
And the user is logged in (a logged in user must be in the session) 
When the user visits their homepage 
Then the user should see "Welcome To Your Homepage" 

別のシナリオがあります。

Given no logged in user (some people would leave this Given out, but I add it for completness) 
When a user visits their homepage 
Then the user should be redirect to the login page 

誰かが正しく指摘したように、ほとんどのBDDツールは、実際にGiven When Thenは区別されませんが、あなたがしなければなりません! 「われわれはいつか」という冗長な性質は、私たち人間が理解しやすく、思考プロセスを助けるために簡単に選ばれました。マシンはあなたが何をステップと呼ぶかを気にすることができませんでした。この場合、常にキーワードを正しく使用するよう努力する必要があります。

0

私が言う:

Given I have requested the home page 
When the home page loads 
Then I should see 'Welcome To The Site' 
0

私は伝統的な前提条件と同等に考えると見る傾向があります。テストアクションと同等のとき。そして、期待される結果に相当するものとして。何の前提条件が存在しない場合

したがって、私は考える除外うとするだけに焦点を当てたときとその後:

When I'm on the homepage 
Then I should see "Welcome To The Site" 

Specflowは、あなたが考える場合や、しかし、Visual Studioのも可能になります使用できるようになりますあなたは1000行の長さの単一のクラスを書くことができます。どちらも可能なので、いずれかが「正しい」という意味ではありません。

関連する問題