我有Teamcity 7.1和大约1000个测试。许多测试不稳定,随机失败。即使单个测试失败,整个构建也会失败,并且运行新构建需要1个小时。
所以我希望能够将Teamcity配置为在同一构建中重新运行失败的测试一段特定的时间。测试的任何成功都应被视为成功,而不是失败。有可能吗?
现在也是某些模块中的测试失败Teamcity没有进入下一个模块。如何解决?
答案 0 :(得分:2)
尊敬的是,我认为你可能会错误地解决这个问题。随机失败的测试不会为您提供任何值作为确定性行为的度量标准。要么修复随机性(通过使用模拟等),要么忽略测试。
答案 1 :(得分: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++;
}
}
}
虽然我很欣赏测试asych代码时可能出现的问题,但是我和@JohnHoerr在这个问题上,你真的需要修复测试。
答案 2 :(得分:0)
如果执行mvn -Dsurefire.rerunFailingTestsCount=2 test
,重新运行失败的测试功能是Maven Surefire插件的一部分
然后测试将一直运行,直到它们通过或重新运行的次数已经用尽。
当然,-Dsurefire.rerunFailingTestsCount
可以在TeamCity或任何其他CI服务器中使用。
请参阅: http://maven.apache.org/surefire/maven-surefire-plugin/examples/rerun-failing-tests.html