You need to enable JavaScript to run this app. TeamCity中基于xUnit框架的C#失败测试用例自动重跑方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

TeamCity中基于xUnit框架的C#失败测试用例自动重跑方案咨询

xUnit + TeamCity 环境下失败测试用例自动重跑实现方案

xUnit 侧代码适配

xUnit 原生未提供控制台参数直接配置全局重跑规则,可通过以下两种方式实现:

方案1:使用第三方NuGet包快速实现

  • 给测试项目安装XunitRetry NuGet依赖
  • 对存在偶发失败的Selenium UI测试方法,添加[Retry(重跑次数)]特性标记,例如[Retry(2)]表示用例失败后最多自动重跑2次,任意一次执行成功即判定用例通过
  • 如需全局配置所有测试的重跑规则,可在测试项目根目录新建xunit.runner.json文件,添加如下配置:
{
  "retryCount": 2,
  "retryOnFailures": true
}
  • 注意重跑前必须添加Selenium驱动状态清理逻辑,建议在测试类的Dispose方法中实现页面缓存清理、驱动实例重置,避免上一次执行的残留状态影响重跑结果。

方案2:自定义测试执行器实现灵活规则

如果需要自定义重跑触发条件(例如仅针对网络异常、元素加载超时等特定异常重跑、配置重跑间隔),可通过扩展xUnit原生特性实现:

  • 继承原生FactAttribute,新增重跑次数、重跑间隔、匹配异常类型等自定义参数
  • 实现IXunitTestCase接口,重写RunAsync方法,捕获测试执行异常后,按配置规则循环执行用例
  • 后续需要支持重跑的测试用例,改用自定义的Fact特性标记即可。

TeamCity 侧无侵入配置方案

如果不想修改测试代码,可直接通过TeamCity构建配置实现重跑:

  • 进入对应构建配置的「构建步骤」设置页,找到执行测试的原步骤,开启「仅运行失败的测试」选项
  • 新增1-2个和原测试步骤完全一致的后续步骤,设置步骤触发条件为「当前面的步骤失败时执行」,即可实现用例失败后自动重跑
  • 如使用dotnet test命令执行测试,可在重跑步骤的命令参数中添加--filter "FullyQualifiedName~%system.teamcity.testFailed.FullyQualifiedName%",仅重跑上一步失败的用例,避免全量执行浪费时间。

内容的提问来源于stack exchange,提问作者agleno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 04:15:02