SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#で始めるテスト駆動開発入門

NUnitの全貌 ~ 基本から、最新バージョンの新機能まで

C#で始めるテスト駆動開発入門(3)


  • X ポスト
  • このエントリーをはてなブックマークに追加

文字列のアサーション

(サンプルコード:「その03_文字列」クラス)

 文字列をテストするために、StringAssertクラスが用意されています。

その03_文字列.cs:指定した文字列が含まれていることをテストする
[Test]
public void Test01_指定した文字列が含まれているか() {
	var 期待値 = "abc";
	var 実際の値 = "123abcde";
	StringAssert.Contains(期待値, 実際の値);
}

 StringAssertには、上記のContains()(文字列が含まれているか)の他に、StartsWith()(指定文字列で始まっているか)、EndsWith()(指定文字列で終わっているか)、IsMatch()(正規表現に一致するか)などがあります。次は、正規表現を使う例です。

その03_文字列.cs:正規表現にマッチすることをテストする
[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以内なら等しいと判定してくれます。

その04_浮動小数点数.cs:許容誤差範囲内での等値比較
[Test]
public void Test02_AreEqualで許容誤差を指定する() {
	double 期待値 = 980.0;
	double 実際の値 = 浮動小数点数.掛ける(1400.0, 0.7);
	Assert.AreEqual(期待値, 実際の値, 0.001);
}

 そのほか、Assert.AreEqual()では無限大(PositiveInfinityNegativeInfinity)や非数(NaN)も扱えるようになっています。

ファイルの内容比較

(サンプルコード:「その05_ファイルとディレクトリー」クラス)

 FileAssertクラスを使うと、ファイルの内容を比較して等しいかどうか検査できます。引数に渡せるのは、パス文字列、StreamFileInfoの3通りです。次のコードは、パス文字列を渡す例です。

その05_ファイルとディレクトリー.cs:ファイルの内容を比較する
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.
*/
}

次のページ
コレクション

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
C#で始めるテスト駆動開発入門連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6518 2013/04/03 13:24

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング