Обновить
20
0
constructor @constructor

Пользователь

Отправить сообщение
Я не сомневаюсь, что решарпер может многое, что еще не умеет студия, и этим исследованием я занялся не от «хорошей жизни».
Начал со сравнения навигации: судя по всему можно жить. Теперь я продолжу сравнивать другие фичи, которые используется в моей команде.
Не совсем, я проверяю, что финализатор вызывает нужный мне код.
Теперь заметил.
Спасибо. Буду иметь ввиду. Но в даннм случае, домен использовался только для теста.
К тому же процессы иногда живут долго: в моем случае месяцами. Так что приходится очищать все что можно и до завершения процесса.
Временный файл, созданный на диске, не будет «почищен».
Интересное замечание.
Надо попробовать реализовать unit тест для данного примера.
Спасибо.
А как же все эти трюки, что таймер (созданный в main) запущенный в DEBUG режиме работает до конца программы, но в RELEASE режиме умирает довольно быстро?
Не понимаю: я проверяю, что Dispose, когда он вызывается «закрывает» ресурс. С другой стороны, я проверяю, что когда Dispose не вызывается, то финализатор «закрывает» ресурс. Где тут дублирование, с учетом, что это не совсем unit тест?
По крайней мере в тех случаях, когда финализатор вызывается, я буду уверен, что он делает то, что я от него ожидаю.
И как я понимаю, в подавляющем числе случаев он все таки вызывается.
Кстати, это только в DEBUG режиме нужно null присваивать, или в RELEASE тоже?
Ведь если нет ссылки на объект, то вроде бы зачем присваивать null?
Убедили. Так что теперь у меня есть два способа тестировать финализатор.
Спасибо!
Согласен. Но в данном случае я имел ввиду усилия программиста приготовить такой тест.
В любом случае, таких тестов (для финализатора) не так много.
Согласен на все 100%. Но никто не может мне гарантировать, что Dispose всегда будет вызываться. Следовательно, небольшое усилие (финализатор и его тест), по крайне мере, минимизуруют ущерб от не вызова Dispose.
Хорошо бы. И я пытаюсь это делать. Но как я могу быть уверен на 100%, что Dispose всегда вызывается? Что он и завтра всегда будет вызываться?
Да. Реализация Dispose покрыта тестом.
в общем случае может быть, но в моем конкретном случае, несколько раз случались проблемы из за того, что ресурс не был освобожден, а тесты этого даже и не проверяли.
в любом случае идея этого поста: как тестировать финализатор, когда это надо.
точно: я забыл написать
temporaryFile = null;

рука отказалось такое писать :).

да, в таком случае этот способо гораздо более прост.
кстати, ведь не советуют вызывать GC.Collect(); или GC.WaitForPendingFinalizers();
утверждают, что это все равно только просьба к сборщику мусора, а когда он на самом деле захочет делать работу неизвестно.
или запутывают?
в данном случае это не критично: таких тестов обычно не много.
и тем не менее я считаю нужным его тестировать

Информация

В рейтинге
Не участвует
Откуда
Модиин, Иерусалим, Израиль
Зарегистрирован
Активность