mcpField
G
Generate Unit Testing Server

Generate Unit Testing Server

本地服务
github.com/Shentia开发工具350 周前更新

关于 Generate Unit Testing Server

这款 MCP 服务可识别 Angular、React 和 Next.js 项目,并使用 Jest、Karma/Jasmine 或 Vitest 生成单元测试。它还能运行测试并计算覆盖率,供开发者审查生成的代码。

主要功能

  1. 01识别项目类型和测试框架
  2. 02为公共方法生成测试
  3. 03支持 Jest、Karma/Jasmine 和 Vitest
  4. 04运行测试并计算覆盖率
  5. 05并排展示源代码和测试代码

适用场景

  1. 01为 React 组件创建测试
  2. 02测试 Angular 服务和管道
  3. 03检查生成的测试和覆盖率

MCP 相关

向 MCP 客户端提供项目检测、测试框架安装、测试生成、验证和代码对比工具。还提供测试文档资源和测试生成提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 单元测试生成服务

一个智能的 Model Context Protocol(MCP)服务,可使用 Jest、Karma/Jasmine 或其他测试框架,为 Angular、React 和 Next.js 项目自动生成全面的单元测试。

图片

功能

  • 🔍 自动检测项目 - 检测 Angular、React 或 Next.js 项目及其版本
  • 📦 框架管理 - 检查测试框架,并提供自动安装选项
  • 📚 实时获取文档 - 生成测试前获取最新的 Jest 和 Jasmine 文档
  • 🤖 由 LLM 驱动的生成 - 使用 Claude Sonnet 4.5+ 智能生成测试
  • 🎯 高覆盖率目标 - 生成以代码覆盖率 >85% 为目标的测试
  • ✅ 所有公共方法 - 为所有导出的函数和公共类方法创建测试
  • 🔄 并排验证 - 并排显示源代码和测试代码,方便审查
  • 🛠️ 多种框架 - 支持 Jest、Karma/Jasmine 和 Vitest

安装

npm install
npm run build

使用方法

作为 MCP 服务

将其添加到 MCP 客户端配置中(例如,Claude Desktop、带 MCP 的 VS Code):

{
  "mcpServers": {
    "generate-unit-testing": {
      "command": "node",
      "args": ["/path/to/GenerateUnitTesting/build/index.js"]
    }
  }
}
可用工具
1. detect_project

检测项目类型和测试框架。

{
  "filePath": "/path/to/your/project/src/component.ts"
}
2. install_test_framework

在获得用户许可后安装缺失的测试框架。

{
  "projectPath": "/path/to/your/project",
  "framework": "jest",
  "autoInstall": false
}
3. generate_unit_test

为源文件生成全面的单元测试。

{
  "filePath": "/path/to/your/project/src/component.ts",
  "framework": "jest",
  "coverageTarget": 85,
  "generateForAllPublicMethods": true,
  "includeEdgeCases": true
}
4. validate_test

运行生成的测试并计算覆盖率。

{
  "testFilePath": "/path/to/your/project/src/component.test.ts",
  "framework": "jest"
}
5. display_side_by_side

创建源代码和测试代码的并排对比。

{
  "sourceFilePath": "/path/to/your/project/src/component.ts",
  "testFilePath": "/path/to/your/project/src/component.test.ts"
}
可用资源
  • docs://jest/latest - 最新 Jest 文档
  • docs://jasmine/latest - 最新 Jasmine 文档
可用提示词
  • generate-unit-test - 全面的单元测试生成提示词
  • generate-edge-cases - 边界情况测试生成提示词
  • generate-mocks - Mock 生成提示词

架构

src/
├── index.ts                 # Main MCP server entry point
├── types.ts                 # TypeScript type definitions
├── tools/
│   ├── detectProject.ts     # Project and framework detection
│   └── testGenerator.ts     # Test generation logic
├── resources/
│   └── documentationFetcher.ts  # Live doc fetching from Jest/Jasmine
├── templates/
│   └── testTemplates.ts     # Framework-specific test templates
├── prompts/
│   └── testPrompts.ts       # LLM prompts for test generation
└── utils/
    ├── fileUtils.ts         # File system utilities
    └── codeAnalyzer.ts      # AST-based code analysis

工作流

  1. 项目检测 - 分析 package.json,识别项目类型和现有测试配置
  2. 框架检查 - 验证测试框架是否已安装;如果缺失,则提示安装
  3. 获取文档 - 从官方来源获取最新框架文档
  4. 代码分析 - 使用 Babel 解析源代码,提取函数、类和方法
  5. 测试生成 - 使用包含上下文(代码 + 文档 + 模板)的 LLM 生成全面的测试
  6. 验证 - 运行测试并计算覆盖率
  7. 显示 - 并排显示对比内容,供开发者审查

支持的框架

Jest
  • React 和 Next.js 项目
  • TypeScript/JavaScript
  • 现代 async/await 模式
  • Mock 函数和间谍
Karma/Jasmine
  • Angular 项目
  • 使用 TestBed 进行组件测试
  • 服务和管道测试
  • 传统的 describe/it 语法

覆盖率目标

该服务以 >85% 代码覆盖率 为目标,生成以下测试:

  • 所有公共函数的测试
  • 所有公共类方法的测试
  • 边界情况场景
  • 错误处理测试
  • 异步操作测试
  • 依赖项的 Mock 实现

输出示例

以 React 组件为例:

// Original: Button.tsx
export const Button = ({ onClick, label }) => {
  return <button onClick={onClick}>{label}</button>;
};

生成的测试:

// Generated: Button.test.tsx
import { render, fireEvent } from '@testing-library/react';
import { Button } from './Button';

describe('Button', () => {
  it('should render with label', () => {
    const { getByText } = render(<Button label="Click me" onClick={() => {}} />);
    expect(getByText('Click me')).toBeInTheDocument();
  });

  it('should call onClick when clicked', () => {
    const handleClick = jest.fn();
    const { getByText } = render(<Button label="Click me" onClick={handleClick} />);
    fireEvent.click(getByText('Click me'));
    expect(handleClick).toHaveBeenCalledTimes(1);
  });

  // ... more tests for edge cases;

要求

  • Node.js 18+
  • TypeScript 5+
  • MCP 客户端(Claude Desktop、带 MCP 扩展的 VS Code 等)

开发

# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run watch

# Start server
npm start

配置

服务会自动检测:

  • 包管理器(npm、yarn、pnpm)
  • 项目类型(Angular、React、Next.js)
  • 现有测试框架
  • TypeScript/JavaScript

无需手动配置!

许可证

MIT

贡献

欢迎贡献!请确保:

  • 代码遵循现有模式
  • 为新功能添加测试
  • 更新文档

支持

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。