代码之家  ›  专栏  ›  技术社区  ›  John

MSTEST:如何创建文件?

  •  0
  • John  · 技术社区  · 7 年前

    我有一个应用程序,它正在监视一个文件目录,然后在看到某种类型的文件时做一些工作(向web服务发送消息)。

    在一个普通的控制台应用程序中,这段代码运行良好,但在MSTEST中,我得到了以下错误

    消息:初始化方法XXX引发异常。 System.IO.DirectoryNotFoundException: System.IO.DirectoryNotFoundException: 找不到路径“C:\repos\MyProjects.Project1\TestResults\some\u testrun\u unique\u 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 回复  |  直到 7 年前
        1
  •  1
  •   John Koerner    7 年前

    您需要先创建包含文件夹,然后再尝试写入文件。

    内部 CreateFiles 方法,您可以这样做:

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

    注意:您不需要费心检查文件夹是否存在,因为 CreateDirectory

        2
  •  0
  •   Matan Shahar    7 年前

    实际上,在下面创建文件没有什么不同 MsTest 与控制台应用程序相反。在控制台应用程序中,工作目录通常是 ./bin/debug MsTest测试 这是您在异常中获得的长文件路径。

    既然这样,你为什么会有例外?因为目录 Tests 当前工作目录下不存在,您需要做的只是创建您可以使用的目录 CreateDirectory