はじめに
前回、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]
public void FileAreEqualTest1()
{
// Test OK.
using (FileStream
expected = new FileStream(@"M:\work\TestA1.txt", FileMode.Open),
actual = new FileStream(@"M:\work\TestA2.txt", FileMode.Open))
{
FileAssert.AreEqual(expected, actual);
}
// Test OK.
FileAssert.AreEqual(
new FileInfo(@"M:\work\TestA1.txt"),
new FileInfo(@"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]
public void BinaryFileAreEqualTest()
{
// Test OK.
FileAssert.AreEqual(
@"M:\work\TestA1.jpg",
@"M:\work\TestA2.jpg");
}
テキストファイルだけではなく、バイナリファイルも検査できる。
2. Exists、DoesNotExistメソッド
Existsメソッドは、指定したファイルが存在することを検査する。
DoesNotExistメソッドは、その逆の判定を行う。
[TestCase]
public void FileExistsTest()
{
// Test OK.
FileAssert.Exists(new FileInfo(@"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]
public void DirectoryAreEqualTest()
{
// Test OK.
DirectoryAssert.AreEqual(
new DirectoryInfo(@"M:\work\TestA1"),
new DirectoryInfo(@"M:\work\TestA1"));
// Test NG. (ディレクトリ配下のファイル内容は同じ)
DirectoryAssert.AreEqual(
new DirectoryInfo(@"M:\work\TestA1"),
new DirectoryInfo(@"M:\work\TestA2"));
}
引数はDirectoryInfo型のみ指定可能。
ディレクトリそのものを検査するので、ディレクトリ配下のファイル内容が全く同じ内容であっても、異なるディレクトリを指定するとAreEqualメソッドはテストNG、AreNotEqualメソッドはテストOKとなる。
2. Exists、DoesNotExistメソッド
Existsメソッドは、指定したディレクトリが存在することを検査する。
DoesNotExistメソッドは、その逆の判定を行う。
[TestCase]
public void DirectoryExistsTest()
{
// Test OK.
DirectoryAssert.Exists(new DirectoryInfo(@"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メソッド
一つで
上記アサーションクラスの制約(テスト判定条件)を全て表現できる。
(記事にしたりするかは保留)