所以我开始使用Jetbrains.DotMemoryUnit nuget包运行内存泄漏测试,但它似乎并没有起作用。
var mcp1 = dotMemory.Check();
// lots of automation testing using TestStack.White
dotMemory.Check( memory =>
Assert.That( memory.GetDifference( mcp1 )
.GetSurvivedObjects().GetObjects( where => where.Namespace.Like( "XXX" ) ).ObjectsCount, Is.EqualTo( 0 ) ));
我们所有的内部命名空间都有一个像XXX.UI.ModuleName这样的格式。
然而,在运行测试时,如果发生内存泄漏,它并没有断言,而且我故意投入了几个(并且有几个没有故意)
知道我在哪里出错吗? (我假设它在哪里,如果在任何地方)
只是为了确定我改变了获取快照的方式,以便我使用
dotmemoryapi.GetSnapshot
然后我手动打开了我的两个快照来比较它们,并没有提到我的XXX命名空间。
但是,如果我使用配置文件执行完全相同的内存测试,但手动按下按钮,则有许多带有XXX命名空间的条目。
老实说,我不知道这里发生了什么。