我正在阅读一本关于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;
}
}
Run Code Online (Sandbox Code Playgroud)
你怎么看?tearDown中的代码是否必要?
是的,这确实是必要的.
你看,JUnit实际上会为每个测试方法创建一个单独的Test类实例,而Junit3测试运行器(JUnit4不是这样)将保留这些实例,直到整个测试套件完成.
因此,如果您的(JUnit3)测试类具有占用大量内存的字段,则在拥有大量测试方法时,您可以轻松地耗尽堆空间.当然,如果示例代码中的那些集合只包含少量短字符串,那么无关紧要.
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |