I need to make units tests for an ASP.net application. Since i never did it. I was wondering how i could make tests for events(click etc...) or to check what a method is returning...
Do you have some example to share? Thanks in advance
I need to make units tests for an ASP.net application. Since i never did it. I was wondering how i could make tests for events(click etc...) or to check what a method is returning...
Do you have some example to share? Thanks in advance
HttpContextの存在に依存するメソッド/イベントに最終的に遭遇するため、ファイルの背後にあるコードに対して単体テストを作成するのは難しいでしょう。HttpContextは、インターフェース自体から継承しない封印されたクラスです。それはあざけることを不可能にします。
有効なHttpContextが存在する必要がある場合(リダイレクトなど)、単体テストでは「オブジェクトが初期化されていません」という例外がスローされます。
これらの問題に遭遇したときに対処するのではなく、Model-View-Presenter(MVP)パターンなどを適用することで、asp.netアプリケーションをより単体テストに適したものにすることができます。UIをビジネスロジックおよびモデルから分離します。
アイデアは、すべてのビジネスロジックを分離コードファイルから別のプレーンなC#クラス(プレゼンター)に移動することです。このクラスに対して、単体テストを作成することもできます。
ASP.NETとMVPの詳細については、http: //msdn.microsoft.com/en-us/magazine/cc188690.aspxを参照してください。
MVPを適用するためにすべてのコードをリファクタリングすると言っているのではなく、MVPをガイドラインとして使用して、可能な場合はビジネスロジックをテスト対象の別のクラスに移動することを提案しているだけです。
これは、ASP.NET の大きな設計上の欠陥の 1 つであり、多くの新しいプロジェクトが ASP.NET MVC で開発されている理由です。François Wahl が言うように、プロジェクトをよりテストしやすくするには、ビジネス ロジックをできるだけ多く、単体テストを作成できるプレゼンター クラスに移動する必要があります。
ASP.NET イベント ハンドラーをテストするには、テストの対象を UI 自体にする必要があります。これには、 Seleniumのようなツールが役立ちます。クライアント上で実行されるため、サーバー上で実行しているプラットフォームに完全に依存しません。また、テスト ケースの自動化に役立つ Firefox アドオンも付属しています。
おそらく、 NUnit クイックスタートを読むことから始めることができます。さらに ASP.NET に特化する必要がある場合は、特に NUnit と ASP.NET に関するこの投稿を参照してください。
http://watin.org/のようなツールを使用でき ます
次の方法でasp.netコードをテストできます。
[Test]
public void ExampleTest()
{
IE ie = new IE("http://www.google.com");
ie.TextField(Find.ByName("q")).TypeText("WatiN");
ie.Button(Find.ByValue("Google Search")).Click();
Link link = ie.Link(Find.By("href", "http://watin.sourceforge.net/"));
Assert.That(link.Text == "WatiN Home");
}
ビジネス クラスを単体テストするには、Nunit と rhino のモックをモック フレームワークとして使用できます。
次の場所で使用できる他のモッキング フレームワークである moq を見つけることができます。
UI テストには、Selenium または Visual Studio の codedUI テストを使用できます。プロジェクト構造については、MVP または MVC をフレームワークとして使用して、関心を分離し、NUNIT またはその他の単体テスト フレームワークを使用してモデル ロジックをテストできます。