仅当远程桌面窗口打开时,Flaky 测试才能在本地和 TeamCity 上通过

问题描述 投票:0回答:1

我有一些 UI 测试(使用 FlaUI 编写)将在本地通过但在 TeamCity 上会失败。当我尝试通过远程桌面观察在远程构建代理上运行的测试以查看错误时,我意识到如果远程桌面应用程序打开且未最小化,测试将通过。这只是我失败的测试的一小部分,因为大多数测试在任何条件下都通过了。是什么原因造成的?

.net teamcity vstest flaui
1个回答
0
投票

通常,当测试在本地通过,但在 CI 上失败时,有两个潜在原因:

  1. 可能有一个测试将状态泄漏到全局环境中,该测试有时会在失败的测试之前运行,导致其对全局环境的假设不正确,从而导致失败。或者...
  2. 您可能会遇到两个访问相同共享全局状态(如缓存或键/值存储)的测试之间的并行执行竞争条件。

我在这里给出更详细的答案.

在您的特定情况下,我的猜测是远程桌面窗口的事情是巧合,或者可能是强制测试以特定顺序执行的事情,该顺序在测试之后运行泄漏测试,否则会失败。

要调试你想弄清楚是什么顺序导致片状测试失败的情况。然后您想开始从测试运行中删除测试,直到找到导致失败的测试。一些测试工具(如 RSpec)具有允许您自动平分测试套件的功能。如果可能的话,利用它。否则你将不得不自己进行二进制搜索。

要自己做到这一点,请检查测试失败的构建日志,看看在它之前运行了哪些测试。然后运行它们,看看您是否可以通过以相同顺序运行测试来在本地重现它。如果你不能,那么你可能遇到了我上面描述的第二个问题。但是,如果可以,那么您只需要在失败之前运行前半部分测试,并在每次测试继续失败时继续将运行的测试减半。如果您运行了一半的测试并且测试没有失败,则运行另一半的测试。 (希望测试失败的结果泄漏是由单个测试引起的。如果不手动调试,这会 really 很难。

© www.soinside.com 2019 - 2024. All rights reserved.