Перезаписать включенный каталог в другой проект - PullRequest
0 голосов
/ 14 января 2020

У меня есть решение с двумя проектами. Первый проект Service1 является моим приложением, а второй проект Tests предназначен для тестирования Service1.

Service1 также содержит папку AppData/config, которая содержит несколько json файлов конфигурации. У меня есть класс, который читает все json файлы из папки и создает из нее объект конфигурации

public IDictionary<string, IConfig> Load()
{
    string[] files = Directory.GetFiles($"{AppDomain.CurrentDomain.BaseDirectory}/App_Data/config", "*.json");
    return files.ToDictionary(Path.GetFileNameWithoutExtension, file => new Config(file));
}

Теперь я хотел написать модульный тест для этого класса, но я видел это при выполнении тесты копирует содержимое App_Data из Service1 в папку bin / Debug. Это проблема, поскольку это означает, что всякий раз, когда я добавляю туда новую конфигурацию, тест должен быть скорректирован, так как возвращаемое значение будет изменяться (количество и содержание)

Поэтому, чтобы бороться с этим, я создал App_Data/config папка в моем проекте Tests, поэтому структура выглядит следующим образом

Service1
  -> App_Data
    -> config
       config1.json
       config2.json
  -> Configuration
     IConfigurationLoader.cs
     ConfigurationLoader.cs
Tests
  -> App_Data
    -> config
       sample.json
  -> Unit
    -> Configuration
       ConfigurationLoaderTest.cs

Однако при запуске тестов туда копируется только папка App_Data из Service1, а sample.json get игнорируются. Как сделать так, чтобы включалась только папка с тестами App_Data?

И мои Service1.csproj и Tests.csproj содержат

<ItemGroup>
  <Folder Include="App_Data" />
</ItemGroup>

Так что она включается при сборке мое приложение. Но для тестов я хочу использовать папку AppData проекта Tests. Как бы я этого достиг?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...