所以我已经开始使用 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 的格式。
但是在运行测试时,它并没有断言何时存在内存泄漏,并且我故意放入了几个(并且几个不是故意的)
知道我在哪里出错了吗?(我假设它在 where 部分,如果在任何地方)
只是为了确定我改变了获取快照的方式,以便我使用
dotmemoryapi.GetSnapshot
然后我手动打开了我的两个快照来比较它们,并没有提到我的 XXX 命名空间。
但是,如果我也使用分析执行完全相同的内存测试,但手动按下按钮,则会有很多带有 XXX 命名空间的条目。
老实说,不知道这里发生了什么。