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)测试类具有占用大量内存的字段,则当您有大量的测试方法时,可以轻松地耗尽堆空间.当然,如果您的示例代码中的这些集合只包含少量短字符串,那并不重要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |