dotMemory Unit 3.2 Help

简介

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。

它是什么样子的?

为了快速向您介绍该框架,让我们考虑以下测试示例。

[Test] public void TestMethod1() { ... // do some work dotMemory.Check(memory => Assert.That(memory.GetObjects(where => where.Type.Is<Foo>()).ObjectsCount, Is.EqualTo(0))); }

此 NUnit 测试从内存中选择所有 Foo 类型的对象,并断言没有此类对象。 当您在代码中查找内存泄漏时,这种测试非常常见。

请注意,dotMemory Unit 不会强制您使用任何特定的 Assert 语法。 使用您的测试所编写框架的语法。 例如,所示的断言使用 NUnit 语法,但可以轻松更新为 MSTest *:

Assert.AreEqual(0, memory.GetObjects(where => where.Type.Is<Foo>()).ObjectsCount);

何时使用 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

-

-

+

最后修改日期: 2025年 9月 28日