You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab中通过dotnet test获取XUnit失败测试用例数

从dotnet test输出提取失败测试数的两种最简方法

方法一:直接解析命令行输出(grep+awk组合)

直接在dotnet test命令后串联处理逻辑,精准提取失败测试的数值:

dotnet test | grep -oP 'Failed:\s*\K\d+'
  • grep -oP:-o只输出匹配到的内容,-P启用Perl正则语法
  • Failed:\s*\K\d+:匹配Failed:后的任意空白字符,\K用来忽略前面的匹配内容,只提取后面的数字

如果需要把结果存入变量供后续逻辑使用:

FAILED_COUNT=$(dotnet test | grep -oP 'Failed:\s*\K\d+')
echo "失败测试用例数量:$FAILED_COUNT"

方法二:解析trx测试报告文件(xmllint工具)

先让dotnet test生成trx格式的测试报告:

dotnet test --logger "trx;LogFileName=test_results.trx"

再用xmllint解析XML格式的trx文件,提取失败数:

FAILED_COUNT=$(xmllint --xpath 'string(//Counters/@failed)' test_results.trx)
echo "失败测试用例数量:$FAILED_COUNT"

trx文件里的<Counters>节点自带failed属性,直接通过XPath定位提取即可。

适配你GitLab脚本的优化版本

结合trx解析的方式,把你之前的脚本逻辑调整为:

- |
  dotnet test --logger "trx;LogFileName=$src/testresults/${CI_PIPELINE_ID}_${CI_JOB_ID}.trx"
  FAILED_COUNT=$(xmllint --xpath 'string(//Counters/@failed)' "$src/testresults/${CI_PIPELINE_ID}_${CI_JOB_ID}.trx")
  if [[ $FAILED_COUNT -gt 0 ]]; then
    echo "检测到$FAILED_COUNT个测试失败。"
    if [[ $browser == $skipBrowser ]]; then
      exit 2
    fi
    exit 1
  else
    echo "所有测试通过。"
  fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:22:44