Среда:
В моем решении в настоящее время есть три проекта:
- .NET Standard 2.0 библиотека с некоторым кодомнравится тестировать.
- Консольное приложение .NET Core 2.2, которое ссылается на библиотеку, чтобы убедиться, что оно работает.
- Консольное приложение .NET Core 2.2, созданное с использованием шаблона «Тестовый проект NUnit»в VS.
Все зависимости в моем тестовом проекте все от NuGet:
- Moq Version = "4.10.1"
- nunit "Version= "3.11.0"
- NUnit.ConsoleRunner "Version =" 3.10.0 "
- NUnit3TestAdapter" Version = "3.13.0"
- Microsoft.NET.Test.SDK "Version =" 16.0.1 "
Проблема:
Стандартная библиотека .NET опирается на наличие файла app.configв любом приложении, которое его использует.Для сопоставления значений с классом используются атрибуты ConfigurationSection и ConfigurationElement , очень похожие на этот ответ: Пользовательский раздел конфигурации с вложенными коллекциями
В консольном приложении .NET Core есть файл app.config, и библиотека способна прекрасно разбирать значения и использовать их.Да.
Консольное приложение NUnit, с другой стороны, содержит тот же файл app.config, но библиотека, похоже, его не видит.Как только он пытается прочитать значение, используя ConfigurationManager.GetSection("...")
, он возвращает null
.
Кто-нибудь получил файл app.config для работы с NUnit3 в такой среде?
Что я пробовал:
Это кажется подобно , оно поддерживает конфигурационные файлы , но я не уверен, что документыссылаясь на какой-то специальный файл конфигурации NUnit или файл app.config.
- Я попытался переименовать app.config в my_test_project_name.dll.config
- Я установил файл конфигурации "Копировать в выходной файл"директория », установленная на« Копировать всегда »
- Я перепробовал все подобные имена, которые могли придумать (app.config, App.config, my_test_project_name.config, my_test_project_name.dll.config и т. д.)
Я также попробовал несколько вещей в одном тесте, который я написал до сих пор, чтобы попытаться как-то установить конфигурационный файл, например предложение использовать AppDomain.CurrentDomain.SetData()
(не сработало,возможно, потому что NUnit3 не поддерживает AppDomain):
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Path\To\My\Tests\my_test_project_name.dll.config");
Хотя в N есть тестыРепозиторий, который, кажется, предлагает с использованием файла конфигурации в NUnit3, возможен , на этот конкретный тестовый файл есть ссылка только в демонстрационном проекте .NET 4.5 , а не .NET Coreдемонстрационный проект .