Модульный тест файловых операций

102
01 октября 2019, 08:20

Впервые задумался над написанием модульного теста для проверки копирования и чтения файлов (Unit написал и использовал заглушки Moq), но не знаю как это сделать. Использую N-Unit. Что необходимо для реализации? В проект с тестами добавить каталог с файлами для физического копирования и destination каталог? Код который у меня реализует работу с файлами:

 public IEnumerable<string> GetFiles(string path)
    {
        var files = new List<string>();
        var directories = new List<string>();
        try
        {
            files.AddRange(Directory.GetFiles(path));
            directories.AddRange(Directory.GetDirectories(path));
            foreach (string dir in directories)
                files.AddRange(GetFiles(dir));
        }
        catch (IOException e)
        {
            Debug.WritLine($"Ошибка, файлы отсутсвуют {e.Message}");
        }
        catch (UnauthorizedAccessException e)
        {
            Debug.WritLine($"Отказано в доступе {e.Message}");
        }
        return files;
    }

 public void CopyAllFiles(string root, string destinationPath)
    {
        Queue<string> directories = new Queue<string>();
        if (!Directory.Exists(root))
        {
            throw new ArgumentException();
        }
        directories.Enqueue(root);
        while (directories.Count > 0)
        {
            string currentDir = directories.Dequeue();
            string[] subDirs = null;
            try
            {
                subDirs = Directory.GetDirectories(currentDir);
            }
            catch (UnauthorizedAccessException e)
            {
                Debug.WritLine($"Отказано в доступе{e.Message}");
            }
            catch (DirectoryNotFoundException e)
            {
                Debug.WritLine($"Папка не найдена{e.Message}");
            }
            string[] files = null;
            try
            {
                files = Directory.GetFiles(currentDir);
            }
            catch (UnauthorizedAccessException e)
            {
                Debug.WritLine($"Отказано в доступе{e.Message}");
            }
            catch (DirectoryNotFoundException e)
            {
                Debug.WritLine($"Папка не найдена{e.Message}");
            }
            // Бегаем по папкам и подпапкам копируя все файлы
            foreach (string file in files)
            {
                try
                {
                    FileInfo fi = new FileInfo(file);
                    File.Copy($"{currentDir}/{fi.Name}", $" 
          {destinationPath}/{fi.Name}", true);
                     {fi.CreationTime}";
                    Console.WriteLine($"{currentDir}/{fi.Name} 
          {destinationPath}/{fi.Name}");
                    Console.WriteLine($"{fi.Name}: {fi.Length}, 
          {fi.CreationTime}");
                }
                catch (FileNotFoundException e)
                {
                    Debug.WritLine($"Файл не найден{e.Message}");
                }
            }
            foreach (string str in subDirs)
                directories.Enqueue(str);
        }
     public void СlearFolder(string folderName)
     {
        var info = new DirectoryInfo(folderName);
        foreach (var file in info.GetFiles())
        {
            file.Delete();
        }
        foreach (var directoryInfo in info.GetDirectories())
        {
            СlearFolder(directoryInfo.FullName);
            directoryInfo.Delete();
        }
      }

Хотелось бы найти правильное понимание вопроса и посмотреть пример хотя бы на одном методе.

READ ALSO
Unity AssetBundle get file in directory

Unity AssetBundle get file in directory

Как мне получить файл который находится в определенной директории в АсеттБандле? директорию "snd2" я добавил в AssetBundle,теперь мне нужно из АссетБандла...

119
работа с cURL через proxy

работа с cURL через proxy

используется код

138
Человеко-понятные-url Yii2

Человеко-понятные-url Yii2

Всем приветТакая ситуация, нужно настроить utm метки - в get запрос добавляется примерно такая информация: ?utm_source=news4&utm_medium=email&utm_campaign=spring-summer

117
Продукт относится к заказу MySQL php

Продукт относится к заказу MySQL php

Подскажите пожалуйста, как правильно реализовать работу с двумя сущностями (таблицами) продукт и заказ в MySQL phpЕсть вариант смежных таблиц...

134