文字列のアサーション
(サンプルコード:「その03_文字列」クラス)
文字列をテストするために、StringAssert
クラスが用意されています。
[Test] public void Test01_指定した文字列が含まれているか() { var 期待値 = "abc"; var 実際の値 = "123abcde"; StringAssert.Contains(期待値, 実際の値); }
StringAssert
には、上記のContains()
(文字列が含まれているか)の他に、StartsWith()
(指定文字列で始まっているか)、EndsWith()
(指定文字列で終わっているか)、IsMatch()
(正規表現に一致するか)などがあります。次は、正規表現を使う例です。
[Test] public void Test04_正規表現マッチング() { var パターン = @"^0[0-9]+-\d+-[0-9]{4}$"; var 実際の値 = "052-999-0000"; StringAssert.IsMatch(パターン, 実際の値); }
浮動小数点数の扱い
(サンプルコード:「その04_浮動小数点数」クラス)
浮動小数点数を扱う時には、丸め誤差に注意しなければなりません。Assert.AreEqual()
のオーバーロードのうち、floatとdoubleを受け取るものは、tolerance(許容誤差)を指定できます。次のテストは、誤差が0.001以内なら等しいと判定してくれます。
[Test] public void Test02_AreEqualで許容誤差を指定する() { double 期待値 = 980.0; double 実際の値 = 浮動小数点数.掛ける(1400.0, 0.7); Assert.AreEqual(期待値, 実際の値, 0.001); }
そのほか、Assert.AreEqual()
では無限大(PositiveInfinity
、NegativeInfinity
)や非数(NaN
)も扱えるようになっています。
ファイルの内容比較
(サンプルコード:「その05_ファイルとディレクトリー」クラス)
FileAssert
クラスを使うと、ファイルの内容を比較して等しいかどうか検査できます。引数に渡せるのは、パス文字列、Stream
、FileInfo
の3通りです。次のコードは、パス文字列を渡す例です。
private string path1 = "./テストデータ.txt"; private string path2 = "./テストデータ(同じ).txt"; private string path3 = "./テストデータ(違う).txt"; [Test] public void Test01_FileAssertクラスの使い方_パス文字列を渡す_RED() { FileAssert.AreEqual(path1, path2); FileAssert.AreNotEqual(path1, path3); FileAssert.AreEqual(path1, path3); // これは失敗する。
/*
CsTdd03Tests.その5_ファイルとディレクトリー.Test01_FileAssertクラスの使い方_パス文字列を渡す_RED:
Stream lengths are both 36. Streams differ at offset 24.
*/ }