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

前端之家收集整理的这篇文章主要介绍了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)测试类具有占用大量内存的字段,则当您有大量的测试方法时,可以轻松地耗尽堆空间.当然,如果您的示例代码中的这些集合只包含少量短字符串,那并不重要.

猜你在找的Java相关文章