【发布时间】:2016-04-26 09:41:35
【问题描述】:
问题:
最近我开始在我的一个项目中遇到一个问题,该项目包含大约 650 个单元测试。
当我一次运行所有这些时,单元测试运行接近尾声的一些测试开始失败,并显示 System.OutOfMemoryException。
当我再次重新运行失败的测试时,它们通过了。
分析:
我在运行测试时查看了任务管理器,发现vstest.executionengine.x86.exe 总是增加,直到达到 1330 MB 内存。然后测试开始因内存不足异常而失败。
当然,我确信我的一些类可能存在内存泄漏,但我所测试的 90% 的类都没有可能导致内存泄漏的代码。
我的许多测试类没有任何 TestInitialize 或 TestCleanup 方法,因为我的类的创建是直接在 TestMethod 测试中完成的,并且由于这些被测试的类没有实现 IDiposable (因为没有可能导致泄漏的代码)。
问题:
现在我不确定我可能做错了什么。但是我想知道即使在运行了一个测试类的所有测试之后,测试对象怎么会保留在内存中?
有没有人遇到过这种情况或者可以指出我应该/可以做些什么来解决或定位问题?
谢谢!
【问题讨论】:
标签: .net unit-testing memory-leaks out-of-memory mstest