Я хочу написать модульные тесты для класса, который реализует IDisposable. Класс имеет множество частных полей, которые также реализуют IDisposable. В своем тесте я хочу проверить, что, когда я звоню Dispose()
, он правильно вызывает Dispose()
во всех своих IDisposable-полях. По сути, я хочу, чтобы мой модульный тест выглядел так:Как выполнить модульное тестирование Dispose() с использованием отражения?
var o = new ObjectUnderTest();
o.Dispose();
Assert.IsFalse(ObjectHasUndisposedDisposables(o));
Я думал об использовании отражения для достижения этого. Похоже, это было бы довольно распространенным требованием, но я не могу найти никаких примеров этого.
Кто-нибудь это пробовал?
EDIT - Я не хочу, чтобы вводить Disposables в тестируемый класс.
'' o.IsDisposed == true''? в вашем случае, вероятно: '' Assert.IsTrue (o.IsDispoed); '' –
Я рекомендую использовать контейнер инъекции зависимостей. Управление одноразовыми зависимостями - это только одно преимущество. Если ваш класс создает больше зависимостей, которые ему нужно отслеживать и удалять, то это не зависит от абстракций. С DI ваш класс просто зависит от 'IWhatever'. Он не знает и не заботится о том, является ли этот класс доступным. –