Как настроить файл настроек для работы с модульными тестами? - PullRequest
2 голосов
/ 11 марта 2009

У меня есть библиотека, для которой я пишу юнит-тесты. Библиотека используется двумя приложениями: одно - службой 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);
    }

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

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

Ответы [ 3 ]

3 голосов
/ 11 марта 2009

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

2 голосов
/ 11 марта 2009

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

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

1 голос
/ 11 марта 2009

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

...