如何测试对象是否已被处理并且GC已被删除?

时间:2014-06-07 10:28:36

标签: c# testing garbage-collection

我正在编写一些代码来删除对象,并希望进行单元测试以确保始终删除该对象。做这个的最好方式是什么?如果要使用GC,你不应该持有任何参考文献,那么如何在没有参考的情况下进行测试?

1 个答案:

答案 0 :(得分:5)

在一般情况下,无法测试是否处置了对象。

WeakReference可能就是你要找的东西。您可以在测试过程中创建WeakReference,并在代码运行完毕后创建:

WeakReference wr = new WeakReference(obj);
GC.Collect();
Assert.IsTrue(!wr.IsAlive);