Как настроить файл настроек для работы с модульными тестами?

2

У меня есть библиотека, для которой я пишу модульные тесты. Библиотека используется двумя приложениями: одна - служба Windows, другая - приложение из командной строки, которое выполняет некоторые операции чтения и записи реестра. Каждый из них имеет немного другой файл App.config, загружаемый из библиотеки при запуске. Например:

    public RetentionService()
    {
        SettingHive = new Hive();
        TimingService = new RetentionTimingService(SettingHive);

        AppSettingsReader asr = new AppSettingsReader();
        object appsListObj = asr.GetValue(@"blocking-process-list", Type.GetType(@"System.String"));
        string appsList = appsListObj.ToString();
        _BlockingAppNames = RetentionService.ListFromList(appsList);

        string targetList = asr.GetValue(@"target-files", Type.GetType(@"System.String")).ToString();
        _TargetLogs = RetentionService.ListFromList(targetList);
    }

Когда я пытаюсь использовать эту библиотеку из unit test, она не загружается, потому что приложение, загружающее библиотеку (предположительно nunit), не имеет файла *.exe.config с соответствующими ключами.

Какой лучший способ сделать это? Я хочу, чтобы библиотека загружала настройки из каждого приложения *.exe.config в процессе производства, но из третьего места, если выполняется unit test.

Теги:
app-config
nunit

3 ответа

2
Лучший ответ

Если ваши модульные тесты предназначены для тестирования кода, то вообще не зависеть от файла конфигурации. Извлеките свою зависимость из своих классов и используйте инъекцию зависимостей для ввода данных. Таким образом, вы можете заглушить свой класс конфигурации.

Если вы на самом деле просто проверяете свой файл конфигурации, вы можете явно загрузить его с помощью ConfigurationManager, хотя я бы не хотел, t предлагайте данные конфигурации тестирования модулей. Это лучший кандидат на тестирование дыма.

3

В качестве альтернативы просто добавьте файл app.config в проект тестирования устройства, содержащий соответствующую информацию.

  • 0
    Это актуально только в том случае, если требуемый App.Config принадлежит точке входа exe. Если у вас есть другой App.Config, который принадлежит одному из ваших инкапсулированных dll, этот трюк не сработает.
1

Лучше всего заключить доступ к данным конфигурации в прокси-классе, который можно перенаправить по мере необходимости во время выполнения - не используйте встроенные API напрямую.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню