c # Unit Test: запись в настройки в модульном тесте не сохраняет значения в user.config - PullRequest
4 голосов
/ 23 апреля 2010

Я выполняю модульный тест ac # (VS 2008).В рамках теста я пишу в настройки, что должно привести к сохранению данных в user.config.

Settings.Default.X = "History"; // X is string
Settings.Default.Save();

Но это просто не создает файл (я перепроверил в "C: \ Documentsи Настройки \ HW \ Локальные настройки \ Данные приложения ").

Если я создаю тот же материал, что и консольное приложение, не возникает проблем с сохранением данных (тот же код).что-то особенное, что мне нужно рассмотреть, делая это в UnitTest?

Ответы [ 3 ]

5 голосов
/ 23 апреля 2010

Я попробовал это с Visual Studio 2010 в Windows 7, и среда Visual Studio Unit Test фактически создает временную папку для тестовых приложений, в которой я нашел файл user.config с правильными настройками. Я думаю, что это может быть то же самое на VS 2008. Схема пути к этим папкам имеет вид:

Путь к Windows 10:

C: \ Users \ $ USER $ \ AppData \ Local \ Microsoft_Corporation \ UnitTestAdapter__Running__StrongName_ {GUID} \ {число}

Windows Vista / Seven path:

C: \ Users \ $ USER $ \ AppData \ Local \ Microsoft_Corporation \ TestAppDomain {Number}

Путь к Windows XP:

C: \ Documents and Settings \ $ USER $ \ Локальные настройки \ Microsoft_Corporation \ TestAppDomain {Number}

Удачи.

1 голос
/ 23 апреля 2010

Проекты Unit Test - это просто библиотеки классов. Нет контекста приложения, и поэтому у вас могут возникнуть проблемы, поскольку объект настроек не знает, в какую компанию / приложение подать файл настроек.

Я не уверен, но он может просто создавать его в памяти.

0 голосов
/ 23 апреля 2010

Спасибо за вашу помощь, это очень помогло найти проблему. Намек на путь помог мне «увидеть, что происходит» и найти нарушителя спокойствия.

Кстати, этот фрагмент

 config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
 config.FilePath

полезно при поиске места хранения.

Моя проблема заключалась в том, что я вызывал Reset () перед перезагрузкой (). На самом деле мой тестовый пример проверяет, правильно ли хранятся объекты, поэтому сохраняет и перезагружает настройки. Я не знал о том, что Reset () «сбрасывает и сохраняет на диск» - я предполагал, что он только сбрасывается в памяти. Я должен только вызвать Reload ().

Поскольку все тестовые наборы имеют свой собственный каталог, настройки должны быть созданы (сохранены) в тестовом примере.

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