简介
dotMemory Unit 是一个额外的框架,可与流行的单元测试框架配合使用。 其目的是让您编写测试,以检查代码中的各种内存问题。 例如,这些测试可以通过检查特定类型对象的内存来确定内存泄漏,或者跟踪内存流量并在流量超过某个阈值时失败。 换句话说,dotMemory Unit 通过内存分析器的功能扩展了您的单元测试框架的可能性。 更具体地说,dotMemory Unit 允许:
检查特定类型对象的内存,
检查内存流量,
获取内存快照之间的差异,
将内存快照保存到 dotMemory (独立的 .NET 内存分析器)中以供进一步调查。
dotMemory Unit 的工作原理
dotMemory Unit 以 NuGet 包 (如果您使用带有 ReSharper 或 JetBrains Rider 的 Visual Studio,这很方便)或 zip 包 (如果您想使用独立的 dotMemory Unit 启动器)形式分发。
要运行支持 dotMemory Unit 的测试,您可以使用 ReSharper 单元测试运行器。 在这种情况下,您的计算机上应安装带有 ReSharper 的 Visual Studio、JetBrains dotCover 或 JetBrains Rider。 另一种选择是使用独立的 dotMemory Unit 启动器运行测试(在 NuGet 包和 zip 文件中均可用)。 了解如何在 使用 dotMemory Unit 独立启动器 中使用启动器。
安装 dotMemory Unit 包后,ReSharper/Rider 的单元测试菜单将获得额外的 在 dotMemory Unit 下运行单元测试 项目。 在此模式下,测试运行器将执行 dotMemory Unit 框架调用以及普通的测试逻辑。 如果您以“普通方式”运行测试(不支持 dotMemory Unit),根据设置,测试要么失败,要么忽略 dotMemory Unit 调用。
dotMemory Unit 支持几乎所有流行的 单元测试框架 ,包括 MSTest、NUnit 和 xUnit.net。
它是什么样子的?
为了快速向您介绍该框架,让我们考虑以下测试示例。
此 NUnit 测试从内存中选择所有 Foo 类型的对象,并断言没有此类对象。 当您在代码中查找内存泄漏时,这种测试非常常见。
请注意,dotMemory Unit 不会强制您使用任何特定的 Assert 语法。 使用您的测试所编写框架的语法。 例如,所示的断言使用 NUnit 语法,但可以轻松更新为 MSTest *:
何时使用 dotMemory Unit
以与普通单元测试相同的方式使用“内存”测试:
在您手动发现问题(如泄漏)后,编写一个覆盖该问题的内存测试。
编写测试以进行主动测试,确保新产品功能不会引发任何内存问题,例如,内存中遗留的对象或显著的内存流量。
入门
快照兼容性
保存到 | 打开于 | |||
dotMemory 10 – 2017.1 | dotMemory 2017.2 | dotMemory 2017.3 – 2019.1 | ||
dotMemory Unit 1.0 – 2.3 | ||||
dotMemory Unit 2.4 | ||||
dotMemory Unit 3.0 – 3.2 | ||||