Тестовый модуль xUnit не читает App.config - PullRequest
0 голосов
/ 03 июля 2018

У меня есть проект модульного тестирования .NET Framework 4.5.2 с xUnit. В моем проекте модульного тестирования у меня есть файл App.config с тем же appSettings, что и мой Web.config.

Когда я запускаю тест, ConfigurationManager.AppSettings[<keyname>] всегда возвращает ноль - это означает, что он не читает файл App.config.

Глядя в каталог bin, я вижу, что у меня есть файл MyProject.Tests.UnitTests.dll.config, который, по-видимому, имеет то же содержимое, что и мой App.config.

Это ошибка с xUnit? Нужно ли выполнять какие-либо настройки xUnit, чтобы заставить ConfigurationManager работать?

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

После небольшого исследования и экспериментов я нашел способ заставить это работать с xUnit для моих нужд . Вместо того чтобы создавать новый app.config, я просто помещаю свои настройки в файл .config, который сборка VS автоматически создала в моей папке bin \ debug , для меня он назывался MyDLL.Tests \ Bin \ Debug \ net472 \ MyDLL.Tests.dll.config . Все просто и сразу начинает работать.

подробности: Я добавил этот раздел для своих настроек непосредственно перед последним тегом.

<appSettings>
    <add key="ExpireMins" value="5" />
</appSettings>

UPDATE: Еще лучше , я нашел способ сделать это в VS2017:

  1. Выберите тестовый проект в обозревателе решений.
    1. Добавить> Новый элемент ...> Файл конфигурации приложения и назовите его «App.config».
    2. Добавьте ваши настройки (например, см. XML выше) в файл App.config.
    3. Очистить и восстановить решение. Ваши новые настройки теперь должны появиться в DLL.configs! :)

Примечание: по какой-то причине вышеупомянутое не сработало для меня в первый раз. Имя «App.config» и используемый проект (тест) могут быть критическими (?).

0 голосов
/ 03 июля 2018

Если вы наткнулись на это, то, к сожалению, ответ, возможно, не тот, который вы ищете, однако я решил его, просто используя NUnit, а не XUnit.

Пытаясь обойти эту проблему, я решил создать класс Configuration, который реализует интерфейс IConfiguration, и внедрять его везде, где я хотел получить AppSettings. Затем я столкнулся с другой проблемой, когда мой макет не установился, дав мне эту проблему . В этот момент я просто сдался и переключился, где мой тест сразу сработал.

В конечном итоге проблема заключается в сочетании использования Resharper, XUnit и .NET Framework.

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