【发布时间】:2016-05-16 18:16:04
【问题描述】:
我想为实现 IDisposable 的类编写单元测试。该类有许多也实现 IDisposable 的私有字段。在我的测试中,我想验证当我调用Dispose() 时,它在其所有IDisposable 字段上正确调用Dispose()。本质上,我希望我的单元测试看起来像这样:
var o = new ObjectUnderTest();
o.Dispose();
Assert.IsFalse(ObjectHasUndisposedDisposables(o));
我正在考虑使用反射来实现这一点。这似乎是一个相当普遍的要求,但我找不到任何例子。
有人试过吗?
编辑——我不想将 Disposables 注入到被测类中。
【问题讨论】:
-
o.IsDisposed == true?在你的情况下可能:Assert.IsTrue(o.IsDispoed); -
我推荐使用依赖注入容器。管理一次性依赖项只是好处之一。如果您的类创建了更多需要跟踪和处理的依赖项,那么它不依赖于抽象。使用 DI,您的课程只依赖于
IWhatever。它不知道也不关心这个类是否是一次性的。
标签: c# unit-testing reflection dispose assert