NUnit是否处置实现IDisposable的对象?

用户名

NUnit是否处置清除时实现IDisposable的对象?我意识到可以通过多种方法处理对象,但是例如,如果该方法在对象被处理之前失败了-NUnit会处理吗?(供参考,我使用的是v2.6 +)

我要问的特定原因是在创建实现IDisposable的对象的情况下,但是我断言在创建时会引发异常。如果测试失败-并且创建了对象,我不想遇到内存泄漏问题。

例子:

//Will the StreamReader instance here be disposed 
//Of if the assertion fails, and the instance is created?
Assert.Throws<Exception>(() => new StreamReader(filename));

我意识到这将起作用:

Assert.Throws<Exception>(() => 
{
    using (StreamReader sr = new StreamReader(filename)) { }
}

但是,如果NUnit会在必要时进行处理,这似乎是不必要的代码。

罗伯·普劳斯

否,以这种方式使用时,NUnit不会处置您的对象。NUnit 3.x将处置可IDisposposable的测试装置,仅此而已。

您声明似乎没有必要进行处置,因为NUnit可以为您做到这一点,但这是不正确的。在示例代码中,您看起来像在传递NUnit一个IDisposable对象,但实际上,您传递的是一个恰好包含IDisposable对象的委托/ lambda /代码块。

您会注意到的签名Assert.Throws是;

public static TActual Throws<TActual>(TestDelegate code) where TActual : Exception

请注意,它需要一个TestDelegate,而不是一个对象。TestDelegate只是一个空的代表,

public delegate void TestDelegate();

您正在阅读代码,就好像传递了一样StreamReader,但是实际上传递的是委托,或者换句话说,传递了NUnit调用的方法。NUnit不知道或不在乎您在该方法中所做的事情。像其他任何方法一样,由您决定要创建的对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处置对象是否处置所有IDisposable属性?

来自分类Dev

C#中的IDisposable实现-可以可选地处置注入的IDisposable吗?

来自分类Dev

Ninject是否会处理在其接口上没有IDisposable但在其实现上没有IDisposable的对象?

来自分类Dev

这是否意味着如果对象未实现IDisposable,则无需手动清除它?

来自分类Dev

使用另一个 IDisposable 实现 IDisposable 的对象

来自分类Dev

使用另一个 IDisposable 实现 IDisposable 的对象

来自分类Dev

WebResponse实现IDisposable时,如何不使“处置”公开可见?

来自分类Dev

工厂是否应该跟踪创建的IDisposable对象?

来自分类Dev

为实现IDisposable的每个对象使用“ using”语句?

来自分类Dev

如果我有Dispose方法,是否必须实现IDisposable?

来自分类Dev

处置将处置仍被引用的对象?

来自分类Dev

是否需要处置实体框架上下文对象

来自分类Dev

是否需要处置实体框架上下文对象

来自分类Dev

调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

来自分类Dev

调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

来自分类Dev

使用Unity,您如何自动处置IDisposable?

来自分类Dev

从方法返回iDisposable-谁负责处置?

来自分类Dev

使用Unity,您如何自动处置IDisposable?

来自分类Dev

从方法返回iDisposable-谁负责处置?

来自分类Dev

如果程序意外关闭,是否会丢弃IDisposable对象?

来自分类Dev

如果我的BaseUow已经实现了它,那么我的UoW类是否需要实现IDisposable?

来自分类Dev

IDisposable 的实际实现

来自分类Dev

MEF和对象处置

来自分类Dev

处置ReportViewer对象

来自分类Dev

获取对象的处置状态

来自分类Dev

StreamReader对象自动处置

来自分类Dev

获取对象的处置状态

来自分类Dev

处置对象并还原它们

来自分类Dev

是否处置了JFrame?

Related 相关文章

  1. 1

    处置对象是否处置所有IDisposable属性?

  2. 2

    C#中的IDisposable实现-可以可选地处置注入的IDisposable吗?

  3. 3

    Ninject是否会处理在其接口上没有IDisposable但在其实现上没有IDisposable的对象?

  4. 4

    这是否意味着如果对象未实现IDisposable,则无需手动清除它?

  5. 5

    使用另一个 IDisposable 实现 IDisposable 的对象

  6. 6

    使用另一个 IDisposable 实现 IDisposable 的对象

  7. 7

    WebResponse实现IDisposable时,如何不使“处置”公开可见?

  8. 8

    工厂是否应该跟踪创建的IDisposable对象?

  9. 9

    为实现IDisposable的每个对象使用“ using”语句?

  10. 10

    如果我有Dispose方法,是否必须实现IDisposable?

  11. 11

    处置将处置仍被引用的对象?

  12. 12

    是否需要处置实体框架上下文对象

  13. 13

    是否需要处置实体框架上下文对象

  14. 14

    调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

  15. 15

    调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

  16. 16

    使用Unity,您如何自动处置IDisposable?

  17. 17

    从方法返回iDisposable-谁负责处置?

  18. 18

    使用Unity,您如何自动处置IDisposable?

  19. 19

    从方法返回iDisposable-谁负责处置?

  20. 20

    如果程序意外关闭,是否会丢弃IDisposable对象?

  21. 21

    如果我的BaseUow已经实现了它,那么我的UoW类是否需要实现IDisposable?

  22. 22

    IDisposable 的实际实现

  23. 23

    MEF和对象处置

  24. 24

    处置ReportViewer对象

  25. 25

    获取对象的处置状态

  26. 26

    StreamReader对象自动处置

  27. 27

    获取对象的处置状态

  28. 28

    处置对象并还原它们

  29. 29

    是否处置了JFrame?

热门标签

归档