我之前从未使用过单元测试,但我想继续前进.现在我有我想要测试的最简单的方法:
public void GetAvailableFiles(string rootFolder)
{
string[] dirs = Directory.GetFiles(rootFolder);
}
Run Code Online (Sandbox Code Playgroud)
我的单元测试如下:
[Test]
public void CheckDirectory()
{
AvailableFile fileUpload = new AvailableFile();
fileUpload.GetAvailableFiles("C:\\Input");
}
Run Code Online (Sandbox Code Playgroud)
当我调试它时,我返回目标位置中的所有文件.但是,我正在努力想出一个有效的条件,在这个条件下,这个测试可以验证它已经通过了.
我的想法是为这个测试预留一定数量的文件.我有10个文件,所以我应该期待10个结果.但是,我不确定如何用我所拥有的东西来写这个.
我该怎么办呢?
这不是单元测试.这是一个集成测试,因为您与文件系统进行交互.如果要进行单元测试,则必须将文件系统交互提取到接口.例如:
public interface IFileScanner {
List<string> GetAvailableFiles(string folder);
}
[Test]
public void GetAvailableFiles_EmptyFolder_ReturnsEmptyList()
{
// Arrange
IFileScanner scanner = new FileScannerEmptyFolderStub();
// Act
var list = scanner.GetAvailableFiles("dummy argument");
// Assert
Assert.IsTrue(list.Count == 0);
}
Run Code Online (Sandbox Code Playgroud)
我建议你在The art of unit testing with examples (Roy Osherove)编写单元测试之前先阅读书中的一些理论.