背景
- 某ファイルフォーマット用のBinaryReaderクラスを作った。
- コンストラクタで受けるStreamがunreadableならArgumentExceptionを投げている。
- これの単体テストを書きたい。
実現方法
Stream.CanRead プロパティ (System.IO) | Microsoft LearnはClose後ならfalseを返すので、それを利用する。
例
[TestMethod] public void コンストラクタに読み取り不可のStreamを渡すと例外を送出する() { using (var stream = new MemoryStream()) { stream.Close(); if (stream.CanRead) { Assert.Inconclusive("ストリームが読み込み不可になっていません。"); } AssertEx.Throws<ArgumentException>(() => new MyBinaryReader(stream)); } }
ここで使っているAssertExは、Chaining Assertionで提供されているクラスです。
Is〜系統が引数の型補完をさせてくれるだけでも便利です、オススメ。(唐突な宣伝)