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

如何在Dart项目中找出未添加测试的文件(GitHub Actions实现)

用GitHub Actions自动排查Dart仓库中未添加测试的文件

核心思路是对比源码文件和对应测试文件的命名——Dart社区通常用xxx_test.dart命名测试文件,放在test目录下。我们可以通过GitHub Actions写一个简单的脚本,自动遍历源码文件,检查对应的测试文件是否存在,最后输出未测试的文件列表。

完整的GitHub Actions工作流配置

直接在仓库的.github/workflows目录下创建check-untested-files.yml文件,内容如下:

name: 检查未添加测试的Dart文件
on: [push, pull_request]

jobs:
  check-untested:
    runs-on: ubuntu-latest
    steps:
      - name: 检出仓库代码
        uses: actions/checkout@v4

      - name: 配置Dart环境
        uses: dart-lang/setup-dart@v1
        with:
          sdk: stable

      - name: 查找未测试文件
        run: |
          # 初始化存储未测试文件的数组
          untested_files=()
          
          # 遍历lib目录下所有.dart源码文件(根据实际目录调整)
          for src_file in lib/*.dart; do
            # 提取文件名(去掉路径和后缀)
            filename=$(basename "$src_file" .dart)
            # 拼接对应的测试文件路径
            test_file="test/${filename}_test.dart"
            
            # 如果测试文件不存在,加入未测试列表
            if [ ! -f "$test_file" ]; then
              untested_files+=("$src_file")
            fi
          done
          
          # 输出结果
          if [ ${#untested_files[@]} -gt 0 ]; then
            echo "发现未添加测试的文件:"
            printf '%s\n' "${untested_files[@]}"
            exit 1 # 可选:触发工作流失败,提醒开发者
          else
            echo "所有源码文件均已添加对应测试"
          fi

按需调整的细节

  • 源码目录:如果你的源码不是放在lib目录(比如直接在根目录),把遍历路径改成*.dart,同时排除test目录:for src_file in $(ls *.dart | grep -v test)
  • 测试文件规则:如果你的测试文件命名不是xxx_test.dart,或者放在其他目录,修改test_file的拼接格式即可
  • 递归遍历子目录:如果源码有多层子目录,用find lib -name "*.dart"来遍历,然后处理路径对应关系(比如lib/utils/tool.dart对应test/utils/tool_test.dart),脚本可以改成:
find lib -name "*.dart" | while read src_file; do
  # 替换lib/为test/,并在文件名后加_test
  test_file=$(echo "$src_file" | sed 's/lib\//test\//; s/\.dart$/_test.dart/')
  if [ ! -f "$test_file" ]; then
    untested_files+=("$src_file")
  fi
done
  • 是否触发失败:如果不需要在发现未测试文件时让工作流失败,删掉exit 1即可,只保留输出列表。

内容的提问来源于stack exchange,提问作者Akash g krishnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:40:34