gpt4 book ai didi

c# - 在其他测试中使用 Microsoft fakes 时单元测试变慢

转载 作者:行者123 更新时间:2023-11-30 16:15:32 24 4
gpt4 key购买 nike

我们有一个单元测试项目,在许多测试中仍然使用“旧式”私有(private)访问器。由于它们是维护的噩梦,我们正在努力摆脱它们,并转向新的 Microsoft Fakes 框架,并在需要时使用 Shims。

最近我们编写了一些使用 Shims 的新单元测试,并注意到由于某种原因,这导致一些其他未修改的旧测试运行速度相当慢。较慢的意思是受影响测试的运行时间约为 10 秒而不是 900 毫秒。不过,单独运行受影响的测试似乎没有这种效果——只有在使用 Shims 测试后运行它们时才会发生这种情况。

最初我们认为这可能只是由于初始化问题,导致测试相互影响。然而,经过一些实验,我们发现即使没有实际添加任何新的测试代码,速度也会变慢。只需在其中一个减慢的测试之前添加以下代码片段,就会导致测试运行速度变慢的相同效果:

using (ShimsContext.Create()) {} 

调试似乎表明被测试的代码确实运行得慢得多(而不是单元测试代码本身),但我们无法确定是哪一部分。我们无法确定为什么这些测试会受到影响而其他测试不会受到影响。此时我们尝试分析这些测试(使用 VisualStudio 中新的“分析测试”选项)。然而,事实证明由于某种原因无法使用 Shims 进行分析测试。抛出以下异常:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test

作为最后的手段,我们还尝试将所有使用 Shims 的测试移动到同一解决方案中的单独测试项目。这似乎确实有所帮助,所有测试运行时间都恢复正常。我们使用测试播放列表在其他项目之前运行每个项目的测试,并且在这两种情况下运行时间都不错。不过,这并不是真正的解决方案,感觉更像是在规避实际问题。所以,我们不确定如何进行。任何想法和想法都会有所帮助。

谢谢。

最佳答案

Microsoft 文档 Better Unit Testing with Microsoft Fakes (RTM).pdf 指出,使用 Shims 时您会看到性能下降。

本文还介绍了垫片对性能的影响: http://technet.microsoft.com/en-us/windows/jj863250.aspx

关于c# - 在其他测试中使用 Microsoft fakes 时单元测试变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com