У меня есть решение с двумя проектами. Первый проект 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
. Как бы я этого достиг?