【问题标题】:Very long delay when running C# unit test in VS2015在 VS2015 中运行 C# 单元测试时延迟很长
【发布时间】:2017-02-22 19:41:01
【问题描述】:

在 VS2015 中运行单元测试时,我有很长的延迟(大约 1 分钟!甚至更多)。甚至在运行单个测试时,我在“测试资源管理器”顶部看到进度条,它流动了大约一分钟,然后我得到了测试结果。报告的测试运行时间符合预期 - 非常小,只有几毫秒。

我的问题是 - 我该如何调试?在测试实际开始运行之前,我如何才能看到这一分钟发生了什么?

【问题讨论】:

  • 不清楚您是否真的在调试测试并且一分钟后您的第一个断点命中,或者您是否只是在运行测试。在第二种情况下调试这个你需要断点和调试运行测试;)
  • 您是否正在运行通用 Windows 应用单元测试?
  • 我随机遇到了类似的问题。这似乎是一个错误。大多数时候,测试运行得非常快(以毫秒为单位),但每隔一段时间,它似乎就会挂在某些东西上。不管我是运行 1 个测试还是 50 个测试。只是一个巨大的停顿,有时几分钟等待测试运行开始。然后,一旦测试开始运行,它们就会很快。通常重新启动 Visual Studio 会清除它......一段时间。很烦人。在更新 2 中仍然会发生。
  • 我也遇到了同样的问题,但非常零星。有时测试执行开始得很快,但有时同一个测试需要一分钟才能开始执行。这可以通过在测试的第一行放置一个断点来看到。
  • 我对 .net 核心项目有同样的问题。测试执行时间非常快,但所有设置都需要 2 分钟。这对于 TDD 来说太长了

标签: unit-testing visual-studio-2015


【解决方案1】:

对于什么都没有发生来说,一分钟是相当长的时间。在运行任何测试之前必须进行大量启动处理(例如,需要加载所有程序集及其依赖项)。如果您正在运行单个测试或运行套件中的所有测试,此命中通常是相同的。

如果您查看“测试”输出窗口,您会更好地了解实际发生的情况以及运行测试所需的实际时间。以我为例,运行一个测试与运行 49 个测试的开销相似。

========== 运行测试已完成:1 次运行 (0:00:01.0416253) ==========

========== 运行测试完成:49 次运行 (0:00:01.9156121) ==========

有多种因素会减慢程序集的加载速度,例如静态构造函数。我倾向于从创建一个没有依赖关系的新测试项目开始,以验证它没有表现出相同的长时间延迟问题,以便您知道它不仅仅是您的机器。然后我会添加您现有测试项目的依赖项,一次一个依赖项以查看添加特定依赖项是否会触发延迟......然后我会查看该项目以查看是否有任何事情发生,例如静态尝试连接到数据库/建立网络连接的构造函数。

也可能值得尝试调试您的测试,但请确保您已打开异常抛出时的中断(如果它类似于导致速度变慢的数据库连接失败,则很有可能出现异常可能会作为该过程的一部分被抛出)。

【讨论】:

  • 有没有办法很好地记录这段时间内正在执行的操作?我在测试输出窗口上看不到任何内容,但它在开始执行测试之前运行了大约 3 分钟。
猜你喜欢
  • 2019-09-16
  • 1970-01-01
  • 2023-04-05
  • 2015-11-21
  • 2014-08-03
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
相关资源
最近更新 更多