我想为我的项目编写单元测试,我想知道有没有办法检查是否在特定目录中创建了任何文件,如果是,有多少行由?组成?再次感谢! 以下是项目的一些代码here。
答案 0 :(得分:4)
您不希望在测试过程中创建文件 - 文件系统属于外部依赖项的类别。如果您与真实文件系统进行交互,则您的测试将成为集成测试,而不是单元测试。
在这种情况下,您可以通过界面表示的瘦包装类调解所有文件系统访问,然后对其进行测试。
例如:
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);
}
}
答案 1 :(得分:3)
要查看文件是否存在,请使用File.Exists():
string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
要查看文件中有多少行,请计算File.ReadLines()的迭代次数(每this answer):
var lineCount = File.ReadLines(@"C:\file.txt").Count();
答案 2 :(得分:0)
您可能只想在测试结束时坚持使用if语句
if (File.Exists("file/path") && File.ReadLines("file/path").Count()
== your_number_of_lines)
{
//passed!
}