首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您应该取消订阅事件并在nunit测试中释放对象吗?

您应该取消订阅事件并在nunit测试中释放对象吗?
EN

Stack Overflow用户
提问于 2019-05-20 18:24:26
回答 1查看 217关注 0票数 0

对于我们是否应该使用NUnit进行单元测试中的引用清理,是否有指导方针?

代码语言:javascript
复制
[Test]
public void Test_AsyncAction_EventRaised()
{
  var someClassToTest = new someClassToTest();
  var mre = new ManualResetEvent(false);
  someClassToTest.SomeEvent += () => {
    mre.Set();
  }

  someClassToTest.SomeAsyncAction();    
  var eventFired = mre.WaitOne(TimeSpan.FromSeconds(1));

  Assert.IsTrue(eventFired);

  //unsub event?
  //dispose MRE?
}

在正常的运行时情况下,不拆子就意味着只要SomeClassToTest还在我体内,测试夹具就会泄漏。如果SomeClassToTest有内存泄漏,那就意味着夹具也会泄漏。

实现IDisposable的类(如ManualResetEvent)意味着,如果我们不调用Dispose,那么它们就会泄漏资源。这也适用于单元测试场景吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-20 20:34:28

我倾向于让测试代码进行适当的清理(除非可能在测试失败的情况下--在这种情况下,我接受来自该测试的资源泄漏)。这是由于以下原因:

  • 我认为测试代码也是文档。因此,我更希望它能显示我的SUT (正在测试的系统)以及其他库的良好使用。
  • 测试的一个用例是在内存分析器下运行它们,以查找SUT中的资源泄漏。然而,如果测试本身引入了资源泄漏,那么从这样的分析器中获得有用的结果就会困难得多--你可能看不到树木的木材。
  • 如果您希望以后能够将测试组合到更大的测试套件中,那么资源泄漏将进行汇总。取决于资源类型(打开的文件、线程、.)这可能会导致问题。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56226281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档