文字列のアサーション
(サンプルコード:「その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.
*/ }
