VisualStudioのテストで、テスト用のファイルを使ったテストを行う方法について、忘れるといけないので、書いておく。
どういった場合に使うか
クラスの単体テストなどをする場合、メソッドの入出力の値をチェックするだけでいい場合は、Assertを使って、一致チェックをすればいいのだが、パラメータからファイルを読み込むとか、ファイルを更新するなどの場合、外部ファイルが必要になってしまう。
利用方法
.runsettingsファイルの追加
拡張子に、.runsettingsというファイルを作成し、中身に、以下のような設定を追加する。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- MSTest adapter -->
<MSTest>
<DeploymentEnabled>False</DeploymentEnabled>
</MSTest>
</RunSettings>
追加した後に、このファイルを、テスト-テスト設定-テスト設定ファイルの選択で登録する。
テストファイルの登録
テストファイルをプロジェクトに登録する。
私は、ファイルを保存するフォルダを用意し、その下に保存しておくことにしている。
保存したファイルのプロパティの「出力ディレクトリにコピー」を新しい場合はコピーする、もしくは常にコピーするにする。
テストプログラムでのコーディング
まず、取り扱うファイルを、DeploymentItemで記述する。実際の実装上では相対パスで記述をした。
[TestMethod()]
[DeploymentItem(@"TestData\test2.g")]
public void update2FlashPrint() {
using (var input = File.OpenRead(@"TestData\test2.g")) {
このように、テストで使用するファイルを記述する。
ファイルの内容が一致しているかチェック
MSTestには、ファイルの一致を判断するAssertがないので、別途作る必要があった。NUnit側には、FileAssertというのがあったため、その名前に合わせた。
public static class FileAssert {
public static void AreEqual(string fileA, string fileB) {
CollectionAssert.AreEqual(System.IO.File.ReadAllBytes(fileA), System.IO.File.ReadAllBytes(fileB));
}
}
コメント