团队城市重新运行特定的失败不稳定测试。

5
我有一个Teamcity 7.1版本,大约有1000个测试。许多测试不稳定,会随机失败。即使单个测试失败,整个构建也会失败,并且运行新的构建需要1小时。
因此,我希望能够配置Teamcity,在同一构建中重新运行失败的测试特定次数。任何测试的成功都应视为成功,而不是失败。这种做法是否可行?
另外,现在如果某个模块中的测试失败,Teamcity不会继续执行下一个模块。如何解决?
3个回答

2

尊敬的,我认为你可能从错误的角度看待了这个问题。一个随机失败的测试并不能作为确定性行为的衡量标准。要么通过使用模拟等方法修复随机性,要么忽略这些测试。


2
它涉及许多异步复杂的工作。失败概率非常低,几乎从不在本地失败。但是,如果测试失败的数量很高,则整个构建的失败概率会大大增加。 - Nikolay Kuznetsov

1
如果你非常必须这样做,我会在一些测试代码周围放置循环,并在抛出异常之前捕获5个失败作为“真正”的失败。像这个C#示例一样做就可以了...
    public static void TestSomething()
    {
        var counter = 0;
        while (true)
        {
            try
            {
                // add test code here...
                return;
            }
            catch (Exception) // catch more specific exception(s)...
            {
                if (counter == 4)
                {
                    throw;
                }

                counter++;
            }
        }
    }

虽然我理解测试异步代码可能会出现的问题,但我支持@JohnHoerr的观点,你真的需要修复测试。

如果代码很丑陋,那么我需要列出经常失败的测试清单并修补它们的代码。 - Nikolay Kuznetsov
毫无疑问,它很丑!我想不到您可以通过TC重新运行失败的测试的方法,这可能是实现您目标最简单的方式。 - mattyB

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接