MSTEST:我如何创建文件?

时间:2017-07-18 15:17:23

标签: c# visual-studio mstest

我有一个正在观看文件目录的应用程序,然后在看到某种类型的文件(向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);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在尝试编写文件之前,您需要创建包含文件夹。

CreateFiles方法中,你可以这样做:

var parentFolder = Path.GetDirectoryName(fileName);
System.IO.Directory.CreateDirectory(parentFolder);

注意:您无需费心检查文件夹是否存在,因为CreateDirectory会为您执行此操作。

答案 1 :(得分:0)

实际上,在MsTest下创建文件与控制台应用程序相比没有太大区别。在控制台应用程序中,工作目录通常为./bin/debug,在MsTest下,它是您在异常中获得的长文件路径。

有了这个,为什么你得到一个例外?因为当前工作目录下不存在目录Tests,所以您需要做的就是创建可以使用CreateDirectory执行的目录。