首页 > 解决方案 > 如何在 VS 2019 中调试意外的 MSTest 交互

问题描述

我有一个小但非常复杂的系统,在 45 个测试类中有超过 2000 个测试。我们最近对正在测试的代码进行了一些组织更改。没有更改任何代码,只是代码位于项目中的位置。我怀疑重组只会改变测试运行的顺序。您会看到描述症状的原因。

之后,运行解决方案中的所有测试导致一类中的 3 个测试失败。当这些测试中的任何一个显式运行时,它们总是通过。事实上,即使运行类中的所有测试也总是会导致所有测试都通过。我也尝试过运行各种测试类组。大多数组总是导致所有测试都通过。也许并不不幸,我发现当运行一些大组的类时,其他类中完全不同的测试由于类似的原因总是失败。

在所有情况下,失败都与调用特定方法的哪个版本有关。大多数测试调用其他操作的模拟版本。我们不使用模拟框架或任何注入。模拟方法是测试类本身的私有方法,并作为参数传递给构造函数或其他需要委托的方法。

不知何故,另一个测试类中的测试正在执行某些操作,导致调用方法的生产版本而不是模拟版本,从而导致失败。我找不到一种快速简便的方法来判断测试的运行顺序,也找不到一种快速简便的方法来控制顺序,以此来缩小可能发生的情况。

我的环境是 Windows 10 企业版,使用 VS 2019 16.6.2 测试针对 Core 2.1 的 C# 代码。

请理解,我正在寻找无需花费数小时即可尝试的建议。不止一个人已经花了几个小时,问题显然不在于生产代码,所以很难证明更多时间是合理的,但我真的不想“忍受它”。

标签: visual-studio-2019mstest

解决方案


推荐阅读