我有一个正在观看文件目录的应用程序,然后在看到某种类型的文件(向Web服务发送消息)时做一些工作。 在创建应用程序之前,我正在创建一些测试。要设置测试,我想创建3个文件。对于拆解,我想删除这些文件。
在普通的控制台应用程序中,此代码工作正常,但在MSTEST中,我收到以下错误
消息:初始化方法XXX引发异常。 System.IO.DirectoryNotFoundException: System.IO.DirectoryNotFoundException:
无法找到路径'C:\ repos \ MyProjects.Project1 \ TestResults \ some_testrun_unique_folder \ Out \ Tests \ 0950 \ file1.txt'..
如何使用MSTEST的文件创建目录?
public class FileWatcherTests
{
string _testPath = @"Tests\" + DateTime.Now.ToString("HHmm");
string[] _testFiles = new[] { "file1.txt", "file2.txt", "file3.txt" };
[TestInitialize]
public void Init()
{
CreateFiles(_testPath, _testFiles);
}
[TestCleanup()]
public void Cleanup()
{
RemoveFiles(_testPath, _testFiles);
}
void CreateFiles(string path, string[] fileNames)
{
foreach (var fileName in fileNames)
{
var fullName = Path.Combine(path, fileName);
File.WriteAllText(
path: fullName,
contents: "Some Random Text");
}
}
void RemoveFiles(string path, string[] fileNames)
{
foreach (var fileName in fileNames)
{
var fullName = Path.Combine(path, fileName);
File.Delete(fullName);
}
}
}
答案 0 :(得分:1)
在尝试编写文件之前,您需要创建包含文件夹。
在CreateFiles
方法中,你可以这样做:
var parentFolder = Path.GetDirectoryName(fileName);
System.IO.Directory.CreateDirectory(parentFolder);
注意:您无需费心检查文件夹是否存在,因为CreateDirectory
会为您执行此操作。
答案 1 :(得分:0)
实际上,在MsTest
下创建文件与控制台应用程序相比没有太大区别。在控制台应用程序中,工作目录通常为./bin/debug
,在MsTest
下,它是您在异常中获得的长文件路径。
有了这个,为什么你得到一个例外?因为当前工作目录下不存在目录Tests
,所以您需要做的就是创建可以使用CreateDirectory执行的目录。