是否有任何方法可以断言创建了文本文件

本文关键字:创建 文本 文件 断言 任何 方法 是否 | 更新日期: 2023-09-27 18:11:53

我想为我的项目编写单元测试,我想知道是否有任何方法可以检查在特定目录中是否创建了任何文件,如果是,由多少行组成?再次感谢!这里是项目的一些代码

是否有任何方法可以断言创建了文本文件

不希望创建文件作为测试的一部分——文件系统属于外部依赖项的范畴。如果您与真实的文件系统交互,那么您的测试就变成了集成测试,而不是单元测试。

在这种情况下,您可以做的是通过由接口表示的瘦包装器类来调解所有文件系统访问,然后对其进行测试。

例如:

public interface IFileSystem
{
    void WriteAllText(string filePath, string fileContents);    
    bool Exists(string filePath);
}
public class RealFileSystem : IFileSystem
{
    public void WriteAllText(string filePath, string fileContents)
    {
        File.WriteAllText(filePath, fileContents);
    }
    public void Exists(string filePath) 
    {
        return File.Exists(filePath);
    }
}
public class TestFileSystem : IFileSystem
{
    public Dictionary<string, string> fileSystem = new Dictionary<string, string>();
    public void WriteAllText(string filePath, string fileContents)
    {
        fileSystem.Add(filePath, fileContents);
    }
    public void Exists(string filePath) 
    {
        return fileSystem.ContainsKey(filePath);
    }
}

查看文件是否存在,使用file . exists ():

string curFile = @"c:'temp'test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");

要查看文件中有多少行,请计算file . readlines()的迭代次数(根据此答案):

var lineCount = File.ReadLines(@"C:'file.txt").Count();

您可能只是想把这个if语句放在测试的末尾

if (File.Exists("file/path") && File.ReadLines("file/path").Count() 
    == your_number_of_lines)
{
    //passed!
}