Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9699

[.NET][C#]NUnitのFileAssert・DirectoryAssertアサーションメソッド一覧

$
0
0

はじめに

前回、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メソッド一つで
上記アサーションクラスの制約(テスト判定条件)を全て表現できる。
(記事にしたりするかは保留:kissing:)

参考

NUnit公式:FileAssert
NUnit公式:DirectoryAssert


Viewing all articles
Browse latest Browse all 9699

Trending Articles