返回市场
MCP测试运行器

MCP测试运行器

作者:privsim15 星标更新:2025-11-09

项目介绍

测试执行器 MCP

这是一个用于运行并解析来自多个测试框架的测试结果的模型上下文协议(MCP)服务器。该服务器提供了一个统一的接口来执行测试并处理其输出,支持以下测试框架:

  • Bats(Bash 自动化测试系统)
  • Pytest(Python 测试框架)
  • Flutter 测试
  • Jest(JavaScript 测试框架)
  • Go 测试
  • Rust 测试(Cargo test)
  • 通用(任意命令执行)

<a href="https://glama.ai/mcp/servers/q001c11ec3"><img width="380" height="200" src="https://gips3.baidu.com/it/u=2393252675,242487780&fm=3081&app=3081&f=PNG?w=760&h=400" alt="测试执行器 MCP 服务器" /></a>

安装

npm install test-runner-mcp

先决条件

需要安装以下测试框架以支持各自的测试类型:

使用方法

配置

在您的 MCP 设置中添加测试执行器(例如,在 claude_desktop_config.jsoncline_mcp_settings.json 中):

{
  "mcpServers": {
    "test-runner": {
      "command": "node",
      "args": ["/path/to/test-runner-mcp/build/index.js"],
      "env": {
        "NODE_PATH": "/path/to/test-runner-mcp/node_modules",
        // 与 Flutter 相关的环境变量(用于 Flutter 测试)
        "FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter",
        "PUB_CACHE": "/Users/username/.pub-cache",
        "PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

注意:对于 Flutter 测试,请确保替换以下内容:

  • /opt/homebrew/Caskroom/flutter/3.27.2/flutter 为您实际的 Flutter 安装路径
  • /Users/username/.pub-cache 为您实际的 pub 缓存路径
  • 更新 PATH 以包括您系统的实际路径

您可以通过运行以下命令找到这些值:

# 获取 Flutter 根目录
flutter --version

# 获取 pub 缓存路径
echo $PUB_CACHE   # 或默认为 $HOME/.pub-cache

# 获取 Flutter 二进制路径
which flutter

运行测试

使用 run_tests 工具,并传入以下参数:

{
  "command": "要执行的测试命令",
  "workingDir": "测试执行的工作目录",
  "framework": "bats|pytest|flutter|jest|go|rust|generic",
  "outputDir": "测试结果存放的目录",
  "timeout": "测试执行超时时间(毫秒,默认:300000)",
  "env": "可选的环境变量",
  "securityOptions": "可选的安全选项,用于命令执行"
}

每个框架的示例:

// Bats
{
  "command": "bats test/*.bats",
  "workingDir": "/path/to/project",
  "framework": "bats",
  "outputDir": "test_reports"
}

// Pytest
{
  "command": "pytest test_file.py -v",
  "workingDir": "/path/to/project",
  "framework": "pytest",
  "outputDir": "test_reports"
}

// Flutter
{
  "command": "flutter test test/widget_test.dart",
  "workingDir": "/path/to/project",
  "framework": "flutter",
  "outputDir": "test_reports",
  "FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter",
  "PUB_CACHE": "/Users/username/.pub-cache",
  "PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin"
}

// Jest
{
  "command": "jest test/*.test.js",
  "workingDir": "/path/to/project",
  "framework": "jest",
  "outputDir": "test_reports"
}

// Go
{
  "command": "go test ./...",
  "workingDir": "/path/to/project",
  "framework": "go",
  "outputDir": "test_reports"
}

// Rust
{
  "command": "cargo test",
  "workingDir": "/path/to/project",
  "framework": "rust",
  "outputDir": "test_reports"
}

// 通用(任意命令,CI/CD 工具等)
{
  "command": "act -j build",
  "workingDir": "/path/to/project",
  "framework": "generic",
  "outputDir": "test_reports"
}

// 带安全覆盖的通用
{
  "command": "sudo docker-compose -f docker-compose.test.yml up",
  "workingDir": "/path/to/project",
  "framework": "generic",
  "outputDir": "test_reports",
  "securityOptions": {
    "allowSudo": true
  }
}

安全特性

测试执行器内置了防止执行潜在有害命令的安全特性,特别是针对 generic 框架:

  1. 命令验证

    • 默认阻止 sudosu
    • 防止危险命令如 rm -rf /
    • 阻止在安全位置之外的文件系统写操作
  2. 环境变量净化

    • 过滤掉潜在危险的环境变量
    • 防止覆盖关键系统变量
    • 确保安全的路径处理
  3. 可配置的安全性

    • 必要时通过 securityOptions 覆盖安全限制
    • 对安全特性的细粒度控制
    • 默认安全设置适用于标准测试使用

可以配置的安全选项:

{
  "securityOptions": {
    "allowSudo": false,        // 允许 sudo 命令
    "allowSu": false,          // 允许 su 命令
    "allowShellExpansion": true, // 允许 shell 扩展如 $() 或反引号
    "allowPipeToFile": false   // 允许管道到文件操作 (> 或 >>)
  }
}

Flutter 测试支持

测试执行器包括增强的 Flutter 测试支持:

  1. 环境设置

    • 自动 Flutter 环境配置
    • PATH 和 PUB_CACHE 设置
    • Flutter 安装验证
  2. 错误处理

    • 收集堆栈跟踪
    • 处理断言错误
    • 捕获异常
    • 检测测试失败
  3. 输出处理

    • 完整捕获测试输出
    • 保存堆栈跟踪
    • 提供详细的错误报告
    • 保存原始输出

Rust 测试支持

测试执行器提供了对 Rust 的 cargo test 的特定支持:

  1. 环境设置

    • 自动设置 RUST_BACKTRACE=1 以获得更好的错误消息
  2. 输出解析

    • 解析单个测试结果
    • 捕获失败测试的详细错误消息
    • 识别忽略的测试
    • 提取总结信息

通用测试支持

对于 CI/CD 管道,GitHub Actions 通过 act,或任何其他命令执行,通用框架提供:

  1. 自动输出分析

    • 尝试将输出分割成逻辑块
    • 识别部分标题
    • 检测通过/失败指示器
    • 即使对于未知格式也提供合理的输出结构
  2. 灵活集成

    • 与任意 shell 命令工作
    • 不需要特定格式
    • 适合与 act、Docker 和自定义脚本集成
  3. 安全特性

    • 命令验证以防止有害操作
    • 可配置允许特定提升权限

输出格式

测试执行器生成结构化的输出,同时保留完整的测试输出:

interface TestResult {
  name: string;
  passed: boolean;
  output: string[];
  rawOutput?: string;  // 完整未处理的输出
}

interface TestSummary {
  total: number;
  passed: number;
  failed: number;
  duration?: number;
}

interface ParsedResults {
  framework: string;
  tests: TestResult[];
  summary: TestSummary;
  rawOutput: string;  // 完整命令输出
}

结果保存在指定的输出目录中:

  • test_output.log:原始测试输出
  • test_errors.log:如果有错误消息
  • test_results.json:结构化的测试结果
  • summary.txt:人类可读的摘要

开发

设置

  1. 克隆仓库
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    

运行测试

npm test

测试套件包括对所有支持框架的测试,并验证成功和失败的测试场景。

CI/CD

该项目使用 GitHub Actions 进行持续集成:

  • 在 Node.js 18.x 和 20.x 上自动测试
  • 测试结果作为工件上传
  • 配置 Dependabot 进行自动化依赖更新

贡献

  1. 分叉仓库
  2. 创建您的功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建拉取请求

许可证

此项目根据 MIT 许可证发布 - 详情请参见LICENSE文件。