Teamcity 重新运行特定的不稳定测试失败



我有Teamcity 7.1和大约1000个测试。许多测试不稳定并且随机失败。即使单个测试失败,整个构建也会失败,运行新版本需要 1 小时。

因此,我希望能够将Teamcity配置为在特定时间内在同一构建中重新运行失败的测试。测试的任何成功都应被视为成功,而不是失败。可能吗?

现在也是某些模块中的测试失败 Teamcity 不会继续下一个模块。如何解决?

恕我直言,我认为您可能会遇到这个问题。随机失败的测试不会为您提供任何价值作为确定性行为的指标。要么修复随机性(通过使用模拟等),要么忽略测试。

如果你绝对必须这样做,我会在你的一些测试代码周围放置循环并捕获 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++;
            }
        }
    }

虽然我很欣赏测试 asych 代码可能出现的问题,但我对此@JohnHoerr,您确实需要修复测试。

如果您执行mvn -Dsurefire.rerunFailingTestsCount=2 test,则重新运行失败的测试功能是Maven Surefire插件的一部分然后测试将运行,直到它们通过或重新运行次数已用完。

当然,-Dsurefire.rerunFailingTestsCount可以在TeamCity或任何其他CI服务器中使用。

看:http://maven.apache.org/surefire/maven-surefire-plugin/examples/rerun-failing-tests.html

最新更新