0
美好的一天!測試訪問器垃圾回收
我在VS2010中使用MSTest。爲什麼訪問器在測試執行後不被垃圾收集?這是我的代碼。這很簡單。
[TestClass]
public class CheckStringsWorkTest
{
CheckProcess checkProcess = null;
CheckProcess_Accessor checkProcess_Accessor;
[TestMethod]
public void StringShaveTest()
{
// MessageBox.Show("Start snapshot 1");
checkProcess = new CheckProcess();
checkProcess_Accessor = new CheckProcess_Accessor(new PrivateObject(checkProcess));
checkProcess.Dispose();
checkProcess = null;
}
[TestCleanup()]
public void RunAfterAllTests()
{
// If uncomment then GC is OK
//checkProcess_Accessor = null;
try
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
catch { }
// MessageBox.Show("Start snapshot 2");
}
據我瞭解 - 訪問器使用PrivateObject作爲包裝來保存實際的對象。但是,如果我將對象設置爲null(checkProcess),則清除引用,所以唯一引用它是來自訪問器 - 爲什麼它不能被收集?它擁有實際的對象,而不是它的副本。