MSTEST:如何创建文件?
MSTEST: How do I create files?
我有一个应用程序正在监视文件目录,然后在看到特定类型的文件时做一些工作(向 Web 服务发送消息)。
在我创建应用程序之前,我正在创建一些测试。要设置测试,我想创建 3 个文件。对于拆解,我想删除那些文件。
在普通的控制台应用程序中,此代码工作正常,但在 MSTEST 中,出现以下错误
消息:初始化方法 XXX 抛出异常。 System.IO.DirectoryNotFoundException: System.IO.DirectoryNotFoundException:
找不到部分路径 'C:\repos\MyProjects.Project1\TestResults\some_testrun_unique_folder\Out\Tests50\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);
}
}
}
您需要在尝试写入文件之前创建包含文件夹。
在 CreateFiles
方法中,您可以这样做:
var parentFolder = Path.GetDirectoryName(fileName);
System.IO.Directory.CreateDirectory(parentFolder);
注意:您无需费心检查文件夹是否存在,因为 CreateDirectory
会为您完成。
实际上,在 MsTest
下创建文件与在控制台应用程序下创建文件没有太大区别。在控制台应用程序中,工作目录通常是 ./bin/debug
,在 MsTest
下,它是您在异常中获得的长文件路径。
既然如此,为什么会出现异常?因为目录Tests
在当前工作目录下不存在,所以你需要做的就是创建那个目录,你可以用CreateDirectory来做。
我有一个应用程序正在监视文件目录,然后在看到特定类型的文件时做一些工作(向 Web 服务发送消息)。 在我创建应用程序之前,我正在创建一些测试。要设置测试,我想创建 3 个文件。对于拆解,我想删除那些文件。
在普通的控制台应用程序中,此代码工作正常,但在 MSTEST 中,出现以下错误
消息:初始化方法 XXX 抛出异常。 System.IO.DirectoryNotFoundException: System.IO.DirectoryNotFoundException:
找不到部分路径 'C:\repos\MyProjects.Project1\TestResults\some_testrun_unique_folder\Out\Tests50\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);
}
}
}
您需要在尝试写入文件之前创建包含文件夹。
在 CreateFiles
方法中,您可以这样做:
var parentFolder = Path.GetDirectoryName(fileName);
System.IO.Directory.CreateDirectory(parentFolder);
注意:您无需费心检查文件夹是否存在,因为 CreateDirectory
会为您完成。
实际上,在 MsTest
下创建文件与在控制台应用程序下创建文件没有太大区别。在控制台应用程序中,工作目录通常是 ./bin/debug
,在 MsTest
下,它是您在异常中获得的长文件路径。
既然如此,为什么会出现异常?因为目录Tests
在当前工作目录下不存在,所以你需要做的就是创建那个目录,你可以用CreateDirectory来做。