単体テストに Assert クラスを使用する
Microsoft.VisualStudio.TestTools.UnitTesting 名前空間の Assert クラスは、特定の機能を確認するために使用します。 単体テスト メソッドはアプリケーション コード内のメソッドのコードを実行しますが、Assert ステートメントを含める場合にのみコードの動作の正確性を報告します。
Assert の種類
Microsoft.VisualStudio.TestTools.UnitTesting 名前空間には複数の Assert クラスが用意されています。
テスト メソッドでは、Microsoft.VisualStudio.TestTools.UnitTesting.Assert クラスの任意のメソッド (Assert.AreEqual など) を呼び出すことができます。 Assert クラスには、多くの選択可能なメソッドがあり、それらのメソッドの多くには複数のオーバーロードが存在します。
文字列とコレクションを比較する
CollectionAssert クラスは、オブジェクトのコレクションを比較する場合や、コレクションの状態を確認する場合に使用します。
StringAssert クラスは、文字列の比較と確認に使用します。 このクラスには、StringAssert.Contains、StringAssert.Matches、StringAssert.StartsWith などのさまざまな便利なメソッドがあります。
例外
AssertFailedException 例外は、テストが失敗するたびにスローされます。 タイムアウトした場合、予期しない例外がスローされた場合、または失敗の結果を出力する Assert ステートメントを含む場合、テストは失敗します。
AssertInconclusiveException は、テストで結果不確定の結果が出力されるたびにスローされます。 通常、まだ編集中のテストに対して、そのテストを実行する準備ができていないことを示すために Assert.Inconclusive ステートメントを追加します。
Note
別の方法として、実行の準備が整っていないテストに IgnoreAttribute 属性でマークを付けることもできます。 しかし、この方法には、まだ実装していないテストの個数に関するレポートを簡単に生成できないという短所があります。
新しい Assert 例外クラスを記述する場合には、そのクラスに基本クラス UnitTestAssertException から継承させると、例外が発生した場合に、その例外がテストや運用コードからスローされた予期しない例外なのか、アサーションによる失敗なのかを識別しやすくなります。
アプリケーション コード内のあるメソッドによりスローされることが予想される例外が実際にスローされることを確認するには、Assert.ThrowsException メソッドを使用します。