2010-11-30 12 views
1

ユニットテストでいくつかの読書をして、最初のテストから始めたいと思っています。私はASP.NET MVC 2を使用しています。ユニットをASP.NET MVC 2でテストする

スタッフの番号を取得してRolesテーブルと照合して、ユーザーのタイプを判断します。このテーブルにユーザーが存在する場合は、UserTypeプロパティが設定されます。

ユーザーの種類ごとにメニューがあり、それぞれのメニュー項目はユーザーの種類ごとに異なります。

各ユーザータイプのメニュー項目を表示するテストはどのように見えますか?

答えて

1

アプリケーションを作成した場合、「レガシーコード」で作業するようになりました(マイケルフェザーの著書「レガシーコードによる効果的な作業」 - 「レガシーコード」によるフェザーとは、ユニットテストによって適切にカバーされていない)。

@bANは述べているように、あなたはあなたがインターフェイスを使用して「スタブ」またはoverrideを使用して置き換えることができますファクトリメソッドを使用して呼び出すことになる方法を隔離するために多くの作業を行う必要があります。これがなければ、インテグレーションテストを実行することになります(異なるアトム間の統合もテストされるため)。しかし、試験方法と生産方法の1対1の比率は、ほとんどすべての場合に十分なカバレッジを提供しません。

Visual Studioのバージョンによって、テストツールの量は異なります。 NUnitは、Visual Studioツールを使用していない場合には、非常に一般的なテストフレームワークhttp://www.nunit.org/です。

テストを取得するには、次のことができます。

YourProjectUnderTestName.Tests.Unitと呼ばれるタイプテストプロジェクトの新しいプロジェクトを作成します。

テストクラスには属性[TestClass]があり、テストメソッドには属性が[TestMethod]であることがわかります。

また、あなたはテストでアレンジ、法、アサートパターンに従うべきAssertクラスとその静的メソッドhttp://msdn.microsoft.com/en-us/library/ms182530.aspx

を見てする必要があります。孤立してテストするコードを実行するために必要なものをすべて入手してから、テスト対象のコードを実行し、Assertsを使用して予想される動作をテストします。[ClassCleanup()]

ClassInitialize
[ClassInitialize()][TestInitialize()]、および [TestCleanup()]

あなたはいくつかの点でも属性を持つこれらの(MSUnit中)[設定]/[解体]方法を知る必要がありますテストが開始される前に実行され、クラスの各テストの前にTestInitializeが実行され、クラスの各テストの後にTestCleanupが実行され、すべてのテストが完了した後にClassCleanupが実行されます。

@bANはhttp://artofunittesting.com/サイトで一見して本を得ることを真剣に考えています。事務所がコードコンプリートと一緒に火をつけていたら私がつかむものの一つです。

@banと@Oliver Hanappiが述べたように、TDDは「適切な」ユニットテストを行い、良好なカバレッジを得るための非常に良い方法です。

幸運を祈る!

+0

ありがとうございます。私はこの本を注文するつもりです。 –

+0

https://www.youtube.com/watch?v=dGPGxKjcYe8 –

1

ユニットテストは「微視的な」テストユニットなので、テストするクラスの各メソッドに対して単体テストを書く必要があります。 Visual Studioを使用するユニットテストは非常に簡単です。クラスを右クリックして単位テストを生成するだけです。 彼はあなたにTestクラスを作って、メソッドをテストするコードを書くだけでいいです。

すべての単体テストはメソッドだけをテストし、別のクラスの別のメソッドはテストしないでください。したがって、テストしているメソッドが別のものを呼び出す場合は、モックオブジェクトを使ってCALLをテストする必要があります。

ユニットテストについての素晴らしい本です。 Art of Unit Testing

+0

生産コードを最初に書き留めてはいけません。メソッドごとに1つのユニットテストパターンに従わないでください。もしそうなら、あなたは間違いなくTDD(テスト駆動開発)をしないでください。 –

+0

@ Oliver:単体テストは各コード単位をテストすることだと思っていましたが、それぞれの方法では? –

+0

私にとっては(しかし、これは最善の方法ではないと確信しています)私は最初にテスト用のユニットテストを書いています。コメントなど)しかし、私は確かに良い方法があります。 – bAN

関連する問題