2012-01-26 14 views
1

私は主にCRUDですが、ビジネスロジックも持っているWebアプリケーションを持っています。 ドメイン、サービス、UI(ASP.NET MVC)レイヤでORM(Entity Framework)を使用しています。CRUD Webアプリケーションでの自動テストの例?

私はこのアプリケーションの自動テストを追加しようとしています。

  • ユニットは
  • 統合が
  • UI 1つのアプリケーション内

をテストテストテスト:

が行う上でのベストプラクティスを発揮そこにいくつかのオープンソースアプリケーションです。

は、現実の世界で使用される「非単純な」アプリケーションについて非常に簡単な例コード例の多くが、何があります。

答えて

1

私はここでやっメートルが、これはそれを行うための正しい方法であると仮定していけないかを説明でしょう - ちょうど私の経験を記述する:

私はSQLiteのを使用して、私のデータアクセス層のためのすべての私のユニットテストを書くためにNUnitのを使用しますデータベースを「模擬」するためにdbを使用します。このようにして、すべてのデータベース呼び出しは実際に実行されますが、dbはメモリに格納されているため、テストを実行するときにも優れたパフォーマンスが得られます。すべてのデータアクセス方法をここで徹底的にテストする必要があります。

私のビジネス機能は、NUnitを使用して再度テストされますが、Moqを使用してすべてのデータアクセス操作をモックします。 (私のように)ビジネス層に何かをキャッシュしているのであれば、本当のものの代わりにインメモリキャッシュクラスを注入して、キャッシュに物事が正しく入れられていることを確認することができます。

それを行うような多くの人が自分のコントローラのために、私はセレンを「記録」私のユニット・テストのようなフロントエンドのテストツールを使用し、その後のコードに変換することを好むが。 Seleniumは、実世界の機能性をテストする際の優れたツールです。関連するFirefoxプラグインを使用して、システムのすべての主要機能を記録し、アサーションを計画することができます(例えば、ボタンAをクリックするとBページに移動し、「ありがとうございました」というメッセージが表示されます)。 Seleniumは、自動化されたフロントエンドユニットテストも実行するための素晴らしいツールです。あなたのテストをC#コードに変換して、あなたの夜間ビルド(私はTeamCityを使用し、素晴らしい)であなたの継続的な統合ツールを使用して実行するか、またはアプリのサイズに応じて、セレンスクリプトを入力として使用し、セミ自動化された方法で実行します。ただ、明確にする

:それはNUnitのテストとセットアップ毎晩、それらを実行するための簡単なCIツールとして(データアクセス、ビジネス層、フロントエンドテスト)上記のすべてのそれらのテストを持っていてうれしいです。このようにして、あなたがオフィスに入るたびに、または毎朝、いくつかのコードを書いたときに、何かが壊れたかどうかを知ることができます。

申し訳ありませんが、これはあなたが探していた例ではありませんが、私はあなたを助けることができると思った。

関連する問題