持续测试
持续测试是一项强大的功能,可帮助您遵循 测试驱动开发实践。 它会检测影响单元测试的更改,重建所有受影响的项目,并重新运行所有新的和受影响的测试。 所有操作都会在后台自动完成。
启用持续测试
在同一时间内,解决方案中只能有一个持续测试会话。 您可以从任何现有的单元测试会话中创建一个持续测试会话。 之前的持续测试会话将被新的会话替换。
要启用持续测试,请打开 单元测试会话 窗口,选择测试,然后点击持续测试图标
。

这将创建一个新的 持续测试 会话。
受影响的测试
持续测试使用“受影响的测试”这一概念来定义当前执行结果未知的测试。 所有从未执行过、被取消或未完成的测试都属于此类别。
已完成且有明确结果(通过或失败)的测试是相关的(未受影响),但仅限于您未对代码进行任何更改之前。 为了确保更改后没有更多受影响的测试,您需要重新运行这些受影响的测试或解决方案中的所有测试。
当启用持续测试时,dotCover 会计算所有单元测试的覆盖率,并监控覆盖代码中的更改以检测更改是否影响任何测试。 当某个测试受影响时,dotCover 会在其图标上添加问号
,并同时更改编辑器状态指示器。

您可以 可视化代码覆盖率以查看单元测试覆盖了代码中的哪些语句,并 从代码导航到覆盖测试。
您可以随时通过点击工具栏上的 删除覆盖率结果
清除有关测试执行结果的信息。
持续测试模式
选择持续测试模式意味着回答两个问题:
1. 是什么触发了测试运行?
您可以在 ReSharper 选项中通过主菜单 选择首选触发器。

有三种可用选项:
构建 :每次构建解决方案时将启动测试。
保存 :每次保存解决方案时将启动测试。 在这种情况下,dotCover 必须自行构建相关项目。 为了帮助您在构建时间和覆盖率数据的相关性之间找到平衡,dotCover 为您提供了三种构建选项:
仅与持续测试会话相关的项目 :dotCover 仅构建单元测试项目及这些单元测试项目引用的项目。
与持续测试会话相关的项目和覆盖率分析中包含的项目 :dotCover 将构建属于 仅与持续测试会话相关的项目 类别的项目以及未被 排除在覆盖率分析之外的代码项目。
解决方案中的所有项目 :dotCover 将始终构建整个解决方案。
快捷键 :在您应用快捷键后(默认情况下未分配)将启动测试。
2. 将运行哪些测试以及如何运行?
您可以在 ReSharper 选项中通过主菜单 选择首选模式。 这些模式位于 持续测试模式 下:
运行所有测试 :dotCover 在没有覆盖率分析的情况下运行所有测试。
涵盖新测试和受影响的测试 :dotCover 在启用覆盖率分析的情况下运行新的和受影响的测试。 这是资源消耗最大但最可靠的模式。 dotCover 始终保持覆盖率信息的最新状态。
运行新测试和受影响的测试 :dotCover 在没有覆盖率分析的情况下仅运行新的和受影响的测试。 这是最节省资源的模式。
如果您选择 覆盖无覆盖率信息的测试 ,dotCover 将分析没有覆盖率信息的测试的覆盖率。 如果特定测试存在覆盖率信息(即使是过时的),dotCover 将在没有覆盖率分析的情况下运行此测试。 我们建议使用此模式作为资源消耗和覆盖率数据相关性之间的折中方案。
覆盖率数据的相关性
运行所有测试 和 运行新测试和受影响的测试 模式是专为减少持续测试的性能影响而设计的。 默认情况下,当选择这些模式之一时,dotCover 不会收集新的覆盖率信息。 因此,仅在您已经拥有相关覆盖率信息的情况下启用它们才有意义。 如果您更改了测试覆盖的代码, 单元测试覆盖率 窗口会明确告知您某些测试的覆盖率信息已过时:

覆盖率高亮还会使用浅色来强调其基于可能过时的覆盖率信息。

尽管如此,如果您确信覆盖率信息仍然相关,您可以使用这些模式并推迟覆盖率分析,直到信息真正过时。
(推荐) 在性能影响和覆盖率数据相关性之间的最佳折中是 运行新测试和受影响的测试 模式与 覆盖无覆盖率信息的测试 选项。 此模式将运行具有过时覆盖率信息的测试,并分析没有覆盖率信息的测试的覆盖率。
持续测试的范围
单元测试会话 窗口中的任何会话都可以切换到持续测试模式。 因此,您可以拥有与单元测试会话数量相同的持续测试范围。
持续测试的实际应用
启用持续测试后,您应运行带有覆盖率分析的单元测试以获取初始覆盖率数据(例如,使用 覆盖所有测试 操作)。 在确保所有测试通过后,您可以关闭 单元测试会话窗口 并继续处理您的项目。 您将能够在 Visual Studio 主窗口的 状态栏上看到当前测试状态。

如果持续测试会话 范围中的任何测试在更改后失败或变得过时,状态图标会通知您。