是否有強制在單元測試期間創建的所有對象最終確定的方法?我一直遇到的問題是,當進程本身(而不是AppDomain
!)終止時,由於丟失GCHandle
實例而導致的任何泄漏似乎都已最終確定,這是在程序集中的所有測試都已運行(並且可能「通過」)之後, 。在單元測試中檢測完成異常
我最好的,但還不夠,嘗試在C#:
class Foo : IDisposable
{
~Foo() { Dispose(); }
public void Dispose() { throw new Exception(); }
}
[TestClass]
public class Finalise
{
void bar()
{
GCHandle.Alloc(new Foo()); // leak
}
[TestMethod]
public void DetectFinalizeException()
{
bar();
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
運行,這將導致一個「合格」的測試,但有一個通知後臺線程有未處理的異常。在具有多個測試的裝配中,這並不理想。
需要一個終結器是非常罕見的。你確定你需要嗎? – jason
這是一個加載本地類的C++/CLI類。終結者是這樣的,C++/CLI類可以刪除它。 – Ayjay