gpt4 book ai didi

java - JUnit - 我应该将 null 分配给在 setUp 中实例化的 tearDown 中的资源吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:10 25 4
gpt4 key购买 nike

我现在正在阅读一本关于 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 - JUnit - 我应该将 null 分配给在 setUp 中实例化的 tearDown 中的资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3653589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com