【问题标题】:Run test multiple times in Visual Studio?在 Visual Studio 中多次运行测试?
【发布时间】:2020-05-26 19:13:24
【问题描述】:

默认情况下,当您从 Visual Studio 的测试资源管理器运行单元测试时,它只运行一次。有没有办法多次运行它,比如 100 次之类的?然后在多次运行后,我会收到一份报告,说明测试通过/失败的次数以及导致所有失败的原因(如果有的话)?

注意:我查看了其他一些类似的 Stack Overflow 线程,但没有看到适用于我的情况的解决方案。

【问题讨论】:

  • 这不是单元测试应该如何工作的。为什么一个单元测试在多次执行中会有不同的结果?如果您要引入随机性,那么它就不是单元测试。
  • 测试需要执行一些代码,这些代码调用了一些其他未被模拟的服务(原因超出了这里的范围)......所以我们需要确保测试一直通过并且是由于调用其他服务而没有失败一些奇怪的原因。我需要确保测试足够健壮并且不会有任何误报,因为它会在未来被大量用于下游服务来验证工作状态..
  • 这就是为什么我想多次运行测试,看看它是否会失败..
  • 如果有帮助,您可以将其视为功能测试而不是单元测试。虽然代码设置为单元测试..
  • 我认为您需要的是某种自定义测试套件,它将对多次运行进行采样并提供容错。测试会很慢,而且很不稳定。我不知道 Visual Studio 提供了开箱即用的功能,尽管可能有专业的插件可用。

标签: c# visual-studio unit-testing


【解决方案1】:

这个问题的方向错了。

单元测试必须一致,它应该总是通过或失败。如果您的测试有时通过但有时失败,这是有问题的。单元测试应该测试代码中的最小功能,例如方法。

在单元测试中,您不测试外部依赖项。当您调用外部服务(如 cmets 中所述)时,您不是在测试您的代码,而是其他人的代码。这就是为什么你总是模拟你的依赖并在你模拟的服务上运行测试的原因。

测试资源管理器不具备您要求的功能,因为不应该以这种方式使用单元测试。

【讨论】:

  • 我 100% 同意你在这里所说的,单元测试应该提供一致的结果。但是,正如我在 cmets 中所说,将其视为功能测试(您不会在其中模拟外部依赖项),并在回答时牢记这一点......我正在编写的测试实际上是一个功能测试 - 我只在我原来的问题中提到了“单元测试”,因为代码设置/布局(例如,正在使用的通用 Visual Studio 库、测试用例注释等)与传统的单元测试几乎相同.....只是,没有任何模拟.
  • 您描述的是集成测试。在构建管道中或以计划的方式运行集成测试是一种常见的做法。如果我是你,我会创建一个控制台应用程序来调用你的“被测”系统,然后通过检查数据库记录或队列中的消息数量(或任何其他可能的证明)来确认结果。
【解决方案2】:

想要在 Visual Studio 中多次运行测试还有其他原因。以 Flacky 测试为例。您需要失败才能了解测试在什么情况下失败。

所以问题仍然存在,有没有办法在 Visual Studio 中多次运行测试

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2021-10-09
  • 2016-05-27
  • 2011-04-19
  • 2023-03-23
  • 2017-05-30
相关资源
最近更新 更多