加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 06:00:31 所属栏目:Java 来源:网络整理
导读:我正在读一本关于JUnit的书,作家建议在tearDown方法中清空资源.为什么?这不是GC的工作吗?可以严重伤害吗? 让我们想到这样的例子: public class SomeTest extends TestCase { Vector vector; ListObject list; protected void setUp() { vector = new Vec
我正在读一本关于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)测试类具有占用大量内存的字段,则当您有大量的测试方法时,可以轻松地耗尽堆空间.当然,如果您的示例代码中的这些集合只包含少量短字符串,那并不重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读