単体テストに Assert クラスを使用する

Microsoft.VisualStudio.TestTools.UnitTesting 名前空間の Assert クラスは、特定の機能を確認するために使用します。 単体テスト メソッドはアプリケーション コード内のメソッドのコードを実行しますが、Assert ステートメントを含める場合にのみコードの動作の正確性を報告します。

Assert の種類

Microsoft.VisualStudio.TestTools.UnitTesting 名前空間には複数の Assert クラスが用意されています。

テスト メソッドでは、Microsoft.VisualStudio.TestTools.UnitTesting.Assert クラスの任意のメソッド (Assert.AreEqual など) を呼び出すことができます。 Assert クラスには、多くの選択可能なメソッドがあり、それらのメソッドの多くには複数のオーバーロードが存在します。

文字列とコレクションを比較する

CollectionAssert クラスは、オブジェクトのコレクションを比較する場合や、コレクションの状態を確認する場合に使用します。

StringAssert クラスは、文字列の比較と確認に使用します。 このクラスには、StringAssert.ContainsStringAssert.MatchesStringAssert.StartsWith などのさまざまな便利なメソッドがあります。

例外

AssertFailedException 例外は、テストが失敗するたびにスローされます。 タイムアウトした場合、予期しない例外がスローされた場合、または失敗の結果を出力する Assert ステートメントを含む場合、テストは失敗します。

AssertInconclusiveException は、テストで結果不確定の結果が出力されるたびにスローされます。 通常、まだ編集中のテストに対して、そのテストを実行する準備ができていないことを示すために Assert.Inconclusive ステートメントを追加します。

Note

別の方法として、実行の準備が整っていないテストに IgnoreAttribute 属性でマークを付けることもできます。 しかし、この方法には、まだ実装していないテストの個数に関するレポートを簡単に生成できないという短所があります。

新しい Assert 例外クラスを記述する場合には、そのクラスに基本クラス UnitTestAssertException から継承させると、例外が発生した場合に、その例外がテストや運用コードからスローされた予期しない例外なのか、アサーションによる失敗なのかを識別しやすくなります。

アプリケーション コード内のあるメソッドによりスローされることが予想される例外が実際にスローされることを確認するには、Assert.ThrowsException メソッドを使用します。

関連項目