DirectoryInfo.Exists всегда возвращает false во время MSTest

У меня есть немного логики на границе моего приложения, связанного с созданием каталогов. Я хотел бы проверить, действительно ли он создает каталоги, как и ожидалось, но DirectoryInfo.Exists всегда возвращает false, даже если каталог действительно существует.

См. также этот вопрос - вам нужно установить точку останова, чтобы увидеть, что каталог на самом деле был создан, потому что MSTest удалит его, когда тест завершится.

Есть ли какой-то параметр, который сообщает MSTest разрешить «обычный» ввод-вывод файловой системы во время тестов?


person default.kramer    schedule 30.11.2011    source источник


Ответы (1)


Предполагая, что вы создаете экземпляр DirectoryInfo несколько раньше, задействовано некоторое внутреннее кэширование состояния каталога - если вы вызываете DirectoryInfo.Refresh() для принудительного обновления, это должно работать:

var dir = new DirectoryInfo(@".\someDir");
//...other things here
dir.Refresh();
bool doesExist = dir.Exists;
person BrokenGlass    schedule 30.11.2011
comment
Конечно же, это делает тесты проходными. Но теперь мне нужно выяснить, пропускаю ли я вызовы Refresh где-нибудь в своем приложении... - person default.kramer; 30.11.2011
comment
Да, это может быть больно - я сам попадал в эту ловушку, как вы можете видеть в моем предыдущем вопросе SO: stackoverflow.com/questions/7828132/ - person BrokenGlass; 30.11.2011