微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – JUnit – 应该为在setUp中实例化的tearDown中的资源分配null?

我正在读一本关于JUnit的书,作家建议在tearDown方法中清空资源.为什么?这不是GC的工作吗?可以严重伤害吗?

让我们想到这样的例子:

public class SomeTest extends TestCase {
  Vector vector;
  List<Object> list;  

  protected void setUp() {
    vector = new Vector();
    list = new ArrayList<Object>();
  }

  // messing with resources
  // adding,deleting,testing whatever

  protected void tearDown() {
    vector = null;
    list = null;
  }
}

你怎么看?那个代码在tearDown是否需要?

解决方法

是的,这确实是必要的.

您将看到,JUnit实际上会为每个测试方法创建Test类的单独实例,并且Junit3测试运行器(JUnit4不是这样)将保持这些实例,直到整个测试套件完成.

因此,如果您的(JUnit3)测试类具有占用大量内存的字段,则当您有大量的测试方法时,可以轻松地耗尽堆空间.当然,如果您的示例代码中的这些集合只包含少量短字符串,那并不重要.

原文地址:https://www.jb51.cc/java/120464.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐