はじめに
前回、NUnitのCollectionAssertクラスのアサーションメソッドを一通り試したので
今回はFileAssertクラス、DirectoryAssertクラスのアサーションメソッドを一通り試してみる。
実施環境
.NET:3.1.401
C#:8.0
NUnit:3.12.0
FileAssertクラス
NUnitのClassicModelのアサーションクラスの1つ。
クラス名の通り、ファイルを検査する。
1. AreEqual、AreNotEqualメソッド
AreEqualメソッドは、2つのファイル内容が同じ内容であることを検査する。
AreNotEqualメソッドは、その逆の判定を行う。
[TestCase]publicvoidFileAreEqualTest1(){// Test OK.using(FileStreamexpected=newFileStream(@"M:\work\TestA1.txt",FileMode.Open),actual=newFileStream(@"M:\work\TestA2.txt",FileMode.Open)){FileAssert.AreEqual(expected,actual);}// Test OK.FileAssert.AreEqual(newFileInfo(@"M:\work\TestA1.txt"),newFileInfo(@"M:\work\TestA2.txt"));// Test OK.FileAssert.AreEqual(@"M:\work\TestA1.txt",@"M:\work\TestA2.txt");}上記のように引数にFileStream型、FileInfo型、もしくはstring型のファイルパスを指定することが可能。
上記例だとファイルのTestA1.txtとTestA2.txtの内容が一致していれば、テストOKとなる。
[TestCase]publicvoidBinaryFileAreEqualTest(){// Test OK.FileAssert.AreEqual(@"M:\work\TestA1.jpg",@"M:\work\TestA2.jpg");}テキストファイルだけではなく、バイナリファイルも検査できる。
2. Exists、DoesNotExistメソッド
Existsメソッドは、指定したファイルが存在することを検査する。
DoesNotExistメソッドは、その逆の判定を行う。
[TestCase]publicvoidFileExistsTest(){// Test OK.FileAssert.Exists(newFileInfo(@"M:\work\TestA1.txt"));// Test OK.FileAssert.Exists(@"M:\work\TestA1.jpg");}引数にFileInfo型、もしくはstring型のファイルパスを指定することが可能。
FileStream型が無いのは、ファイルが存在しなかった場合、FileStream型のオブジェクトを生成する段階でFileNotFoundExceptionが発生するからだろう。
DirectoryAssertクラス
NUnitのClassicModelのアサーションクラスの1つ。
クラス名の通り、ディレクトリを検査する。
1. AreEqual、AreNotEqualメソッド
AreEqualメソッドは、2つのディレクトリが同じであることを検査する。
AreNotEqualメソッドは、その逆の判定を行う。
[TestCase]publicvoidDirectoryAreEqualTest(){// Test OK.DirectoryAssert.AreEqual(newDirectoryInfo(@"M:\work\TestA1"),newDirectoryInfo(@"M:\work\TestA1"));// Test NG. (ディレクトリ配下のファイル内容は同じ)DirectoryAssert.AreEqual(newDirectoryInfo(@"M:\work\TestA1"),newDirectoryInfo(@"M:\work\TestA2"));}引数はDirectoryInfo型のみ指定可能。
ディレクトリそのものを検査するので、ディレクトリ配下のファイル内容が全く同じ内容であっても、異なるディレクトリを指定するとAreEqualメソッドはテストNG、AreNotEqualメソッドはテストOKとなる。
2. Exists、DoesNotExistメソッド
Existsメソッドは、指定したディレクトリが存在することを検査する。
DoesNotExistメソッドは、その逆の判定を行う。
[TestCase]publicvoidDirectoryExistsTest(){// Test OK.DirectoryAssert.Exists(newDirectoryInfo(@"M:\work\TestA1"));// Test OK.DirectoryAssert.Exists(@"M:\work\TestA1");}AreEqualメソッドとは異なり、こちらはstring型での指定も可能。
まとめ
ClasicModelのアサーションメソッドは一通り試してみた。
[.NET][C#]NUnitのClassic Modelアサーションメソッド一覧※Assertクラス
[.NET][C#]NUnitのStringAssertアサーションメソッド一覧
[.NET][C#]NUnitのCollectionAssertアサーションメソッド一覧
[.NET][C#]NUnitのFileAssert・DirectoryAssertアサーションメソッド一覧
なお、ConstraintModelではAssert.Thatメソッド一つで
上記アサーションクラスの制約(テスト判定条件)を全て表現できる。
(記事にしたりするかは保留
)