1

約半年前、単体テストを掘り下げ始めました。私はTDD(または私がそう思っていたもの)に進み、MVCアプリケーションの動作駆動型を開発したいと考えています。私の最後のプロジェクトは受け入れテスト可能な環境で実行されなかったので、受け入れテスト (実際のエンドツーエンド) の概念は私にとって新しいものです。

私はいくつかの良い記事、特にサンダーソンのhttp://blog.stevensanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/を読むことから始め、私のバックアップを取っています。そのトピックに関する彼の本を読んで、MVC スキルを習得します。

エンドツーエンドのテストには SpecFlow と SimpleBrowser を使用しています。ナビゲーション バーからナビゲーションを操作するのは簡単なことでしたが、今は行き詰っています。さらに記事を作成したりコメントしたりするためのユーザー アカウントを実装することを目指しています。登録プロセスを推進するのは頭痛の種でした。この機能ファイルの場合:

Feature: User accounts
    In order to customize and influence page content
    As a user
    I want to able to create an own user account

Scenario: Create a user
    Given  I am on the /Account/Create page
    When I fill out the registration formular as follows
    | NickName | EmailAddress                 |
    | test123  | test.address@test-server.com |
    And I click the "Create" button
    And I clicked the link in the authentication mail
    Then I should be on the root page
    And I should see the message "Welcome test123!"

必要なテスト環境 (この例ではメール サーバー) を提供し、テストの脆弱性を軽減する方法がわかりません ([作成] ボタンのラベルを [送信] に変更することを考えてみてください)。キャプチャジェネレーターを織り込んで、後で自動ユーザー作成を防ぐことは言うまでもありません (皮肉なことです)。先のことを考えすぎているだけかもしれませんが、実際には TDD ではそうすべきではありませんが、画面を見つめて次のテストのことを考えていることがあります。


スー..そのテキストの壁の後に、実際の質問:この種の動作をどのように実装すればよいですか?

  • UI レベルのテストに固執し、キャプチャ ロジックを実装するために必要に応じてリファクタリングする
  • コントローラー レベルのテストにフォールバックする
  • あなたが私を啓発する他の方法
4

2 に答える 2

2

ここでは、何が正しくて何が間違っているかは言えません。私にとっては非常にうまく機能するので、私が行っていることだけを述べます。

サービス層のテストに SpecFlow を使用しています。ASP.net MVC では、それがコントローラーになります。あなたが言ったように、その種の UI テストは非常に脆いので、ある種の高度な JavaScript UI を使用する場合にのみ繰り返します。

そうすれば、私のテスト スタックは次のようになります。

  1. モデル内のより複雑なアルゴリズムの NUnit テスト
  2. コントローラーをテストするための SpecFlow。これにより、ビューが本来あるべきものを受け取り、モデルが意図したとおりに相互作用することが保証されます。
  3. 主に Knockout JS で使用する JavaScript モデルの QUnit テスト (これらの 2 つは相互に作成されたように見えます)
  4. 手動の受け入れテスト (非常に粗く、あまり多くない)、十分に文書化されている
  5. より高度な UI のための WatiN を使用したいくつかの (ごく少数の) 自動化された UI テスト

とはいえ、記述されたテストの約 75% は項目 2 (SpecFlow) 用で、15% は項目 3 (QUnit) 用です。それが私にとってはうまくいくように思えますが、どんな提案も大歓迎です。

于 2011-10-28T03:21:45.853 に答える
1

1 つのテストで、作成ボタンのクリックと確認リンクのクリックの両方を組み合わせることはしません。メールを確認するようにというメッセージが表示されるので、最初のテスト (作成ボタンをクリック) を終了します。残りの動作をテストする場合は、確認 URL を指定してクリックするとウェルカム ページが表示される別のテストを作成する必要があります。

于 2011-10-31T17:27:00.263 に答える