1

複数のフィールドに入力する必要があるフォームがあります。ただし、必須フィールドは 1 つだけです。ということで、以下の仕様にしました。

 [Subject(typeof(CompanyHomeController))]
public class when_the_save_button_is_clicked
{
    private It should_verify_that_the_company_name_has_been_filled;

    private It should_show_some_text_next_to_the_company_field_if_it_has_not_been_filled;

    private It should_submit_all_the_details_on_the_form_if_there_are_no_errors;

    private It should_take_the_user_back_to_the_list_of_companies;
}

これを実装したいのですが、mvccontrib.watin dll のようなものを使用しなければならない機能テストに非常によく似ているため、混乱しています。それは実際に機能テストであるというのは正しいですか?BDD の「間違った」仕様を作成しましたか?

4

3 に答える 3

2

定義についてはまだあまり心配していません。とにかく、さまざまな形式のテストと BDD の間には多くのあいまいな境界があります。

WRT Watin、ブラウザ経由のテストについて話していると思いますか? ブラウザーを介してテストするか、コントローラーで直接「皮下」でテストできます。どちらも BDD を実行する有効な方法です。その選択は、何をテストしようとしているか、テストをどれだけ速く実行したいかなどによります。

あなたの仕様に関しては、実装が少し難しいかもしれません。おそらく、有効/無効な送信に対して異なる仕様が必要になるでしょう。たとえば、次のようになります。

[Subject(typeof(CompanyHomeController))]
public class company_form_submitted_with_fields_completed
{
    It should_save_all_the_details_to_the_main_list;

    It should_take_the_user_back_to_the_company_list_page;
}

[Subject(typeof(CompanyHomeController))]
public class company_form_submitted_with_some_fields_missing
{
    It should_remain_on_the_company_edit_page;

    It should_warn_that_the_company_field_is_required;
}

(「プライベート」修飾子は必要ないことに注意してください。これにより、少しクリーンアップされます)。

于 2011-04-26T16:40:40.447 に答える
1

BDD は「機能テスト」ではなく「例による仕様」と考えてください。

しかし、BDD の目標は、何をすべきかを調整し、開発者をガイドするテストとしても実行可能な例の形式で文書化することであることを忘れないでください。

BDD はシステム検証手法ではなく、システム仕様手法です。これは便利ですが、興味深いアルゴリズムの場合、それだけでは不十分な場合があります。

「例によって」なので、何をするか、どのように反応するかを述べます。フォームに入力してから、[会社] フィールドを空白にすることがあります。どのように反応するべきですか?たぶん、あなたはそれを埋めますが、別のものを空白にします. それはどのように異なる反応をするべきですか?

これは「例による仕様」であるため、一連の小さなストーリーを伝える必要があります。

それは役に立ちますか?

于 2015-05-22T19:57:24.637 に答える
0

いくつかの調査を行った後、

これにより、私が持っていた多くの誤解が明確になりましたhttp://www.msteched.com/2010/NorthAmerica/DPR302。うまくいけば、誰かを助けることができます。さらに、Amir による回答.NET 向けの最も成熟した BDD フレームワークは何ですか? 物事をより明確に見るのに役立ちました。

于 2011-04-26T08:17:00.737 に答える