visual-studio-2019 - 如何在 VS 2019 中调试意外的 MSTest 交互
问题描述
我有一个小但非常复杂的系统,在 45 个测试类中有超过 2000 个测试。我们最近对正在测试的代码进行了一些组织更改。没有更改任何代码,只是代码位于项目中的位置。我怀疑重组只会改变测试运行的顺序。您会看到描述症状的原因。
之后,运行解决方案中的所有测试导致一类中的 3 个测试失败。当这些测试中的任何一个显式运行时,它们总是通过。事实上,即使运行类中的所有测试也总是会导致所有测试都通过。我也尝试过运行各种测试类组。大多数组总是导致所有测试都通过。也许并不不幸,我发现当运行一些大组的类时,其他类中完全不同的测试由于类似的原因总是失败。
在所有情况下,失败都与调用特定方法的哪个版本有关。大多数测试调用其他操作的模拟版本。我们不使用模拟框架或任何注入。模拟方法是测试类本身的私有方法,并作为参数传递给构造函数或其他需要委托的方法。
不知何故,另一个测试类中的测试正在执行某些操作,导致调用方法的生产版本而不是模拟版本,从而导致失败。我找不到一种快速简便的方法来判断测试的运行顺序,也找不到一种快速简便的方法来控制顺序,以此来缩小可能发生的情况。
我的环境是 Windows 10 企业版,使用 VS 2019 16.6.2 测试针对 Core 2.1 的 C# 代码。
请理解,我正在寻找无需花费数小时即可尝试的建议。不止一个人已经花了几个小时,问题显然不在于生产代码,所以很难证明更多时间是合理的,但我真的不想“忍受它”。
解决方案
推荐阅读
- sql-server - 将行复制到同一个表中,除了主键和自动递增列
- linux - 有什么方法可以使提交的 slurm 作业不被抢占?
- healthkit - 是否可以在 WatchOS 中构建默认的 ECG 类应用程序?
- sql - AutoMapper.AutoMapperMappingException:错误映射类型
- gitlab - GitLab 管道抛出错误“错误:无法找到或加载主类”
- javascript - 是否有更快的方法将数据对象键中的值复制到 javascript 中同一数据对象中的新键?
- mongodb - Mongo-Express 没有显示 Mongodb 服务器
- javascript - 如何在 D3 中的饼图中显示文本
- c# - C# 可搜索列表 - 替换 SQL 表
- python-3.x - 如何检查子进程的子进程是否已完成 Python