Continuous integration 如何修复teamcity中重新执行测试的失败测试计数?

Continuous integration 如何修复teamcity中重新执行测试的失败测试计数?,continuous-integration,automated-tests,teamcity,specflow,specrun,Continuous Integration,Automated Tests,Teamcity,Specflow,Specrun,我们使用TeamCity进行Selenium测试执行Specflow+Specrun,问题是TeamCity计数重新执行的测试 例如,如果某个测试第一次失败,他将被重新执行两次以上,在teamcity中,我们将看到三个测试失败,但可能是一个测试 另外,如果第一次重新执行失败,但其他两次将成功,这将在teamcity中报告为两次失败,一次通过,但我需要报告只有一次测试通过 可以使用服务消息或其他信息在TeamCity中对此进行配置? 更新: 根据答案,我们可以使用powershell脚本收集日志,

我们使用TeamCity进行Selenium测试执行Specflow+Specrun,问题是TeamCity计数重新执行的测试

例如,如果某个测试第一次失败,他将被重新执行两次以上,在teamcity中,我们将看到三个测试失败,但可能是一个测试

另外,如果第一次重新执行失败,但其他两次将成功,这将在teamcity中报告为两次失败,一次通过,但我需要报告只有一次测试通过

可以使用服务消息或其他信息在TeamCity中对此进行配置?

更新:

根据答案,我们可以使用powershell脚本收集日志,并使用teamcity服务消息更改构建状态:

$path = Get-ChildItem %teamcity.build.checkoutDir%\ProjectFolder\bin\Remote\TestResults\specrun.log
$file = Get-content $path
$total = $file | select-string "Total:"
$passed = $file | select-string "Succeeded:"
$failed = $file | select-string "Failed:"

write-host $( "##teamcity[buildStatus text='Tests {0}, {1}, {2}']" -f $total, $passed, $failed )

TeamCity的表现与预期一致。TeamCity报告测试框架告诉他的内容。大致过程如下:

  • 执行运行测试的步骤
  • 收集输出日志
  • Extract stats:执行、通过和失败的测试数
  • 如果测试失败(如果配置为这样做),则生成失败
您必须配置您的测试框架(在您的案例中为specflow+specrun)以更改其报告重新执行的方式您应该配置specflow,以不同的方式记录重新执行的情况。。。如果可以的话

通常应避免重新执行测试。测试应在第一次尝试时起作用。如果需要,他们应该准备好状态,进行测试,并清理状态

重新执行的需要表明可能与其他测试存在某种依赖关系。比如:

  • 测试001:搜索用户Foo1。(失败
  • 测试002:添加用户Foo1。(正常
  • 重新执行测试001:搜索用户Foo1。(正常

正确的方法是TEST001没有TEST002的依赖项,添加用户Foo1、testsearch和clean用户Foo1。

谢谢。非常有用的脚本。