最近、NUnit フレームワークを使用してコードの単体テストを書き始めました。
NUnit の基本概念と簡単なテストの作成に精通しています。
実際、ファイルで動作するコードをテストする方法がわかりません。たとえば、以下のクラスのテストを書きたいです。
public class ShapeLoader
{
private static void StreamLoading(object sender, StreamLoadingEventArgs e)
{
try
{
string fileName = Path.GetFileName(e.AlternateStreamName);
string directory = Path.GetDirectoryName(e.AlternateStreamName);
e.AlternateStream = File.Exists(directory + @"\\" + fileName) ? new FileStream(directory + @"\\" + fileName, e.FileMode, e.FileAccess) : null;
}
catch
{ }
}
public static ShapeFileFeatureLayer Load(string filePath, ShapeFileReadWriteMode shapeFileReadWriteMode, bool buildIndex = true)
{
if (!File.Exists(filePath)) { throw new FileNotFoundException(); }
try
{
switch (shapeFileReadWriteMode)
{
case ShapeFileReadWriteMode.ReadOnly:
// if (buildIndex && !HasIdColumn(filePath)) BuildRecordIdColumn(filePath, BuildRecordIdMode.Rebuild);
ShapeFileFeatureLayer.BuildIndexFile(filePath, BuildIndexMode.DoNotRebuild);
var shapeFileLayer = new ShapeFileFeatureLayer(filePath, shapeFileReadWriteMode) { RequireIndex = true };
((ShapeFileFeatureSource)shapeFileLayer.FeatureSource).StreamLoading += StreamLoading;
return shapeFileLayer;
case ShapeFileReadWriteMode.ReadWrite:
return new ShapeFileFeatureLayer(filePath, shapeFileReadWriteMode);
default:
return null;
}
}
catch (Exception ex)
{
if (ex.Message.Contains("Could not find file")) throw new FileNotFoundException();
throw;
}
}
}
このコードは、正常に動作するかどうかを確認するために物理ファイルを必要としますが、単体テストが物理ファイルに依存していることは正しいですか?
このようなコードの単体テストを作成するにはどうすればよいですか?