关于 Generate Unit Testing Server
这款 MCP 服务可识别 Angular、React 和 Next.js 项目,并使用 Jest、Karma/Jasmine 或 Vitest 生成单元测试。它还能运行测试并计算覆盖率,供开发者审查生成的代码。
主要功能
- 01识别项目类型和测试框架
- 02为公共方法生成测试
- 03支持 Jest、Karma/Jasmine 和 Vitest
- 04运行测试并计算覆盖率
- 05并排展示源代码和测试代码
适用场景
- 01为 React 组件创建测试
- 02测试 Angular 服务和管道
- 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
工作流
- 项目检测 - 分析
package.json,识别项目类型和现有测试配置 - 框架检查 - 验证测试框架是否已安装;如果缺失,则提示安装
- 获取文档 - 从官方来源获取最新框架文档
- 代码分析 - 使用 Babel 解析源代码,提取函数、类和方法
- 测试生成 - 使用包含上下文(代码 + 文档 + 模板)的 LLM 生成全面的测试
- 验证 - 运行测试并计算覆盖率
- 显示 - 并排显示对比内容,供开发者审查
支持的框架
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
贡献
欢迎贡献!请确保:
- 代码遵循现有模式
- 为新功能添加测试
- 更新文档
支持
- 如有问题或疑问,请在代码仓库中提交 issue。
- 作者:Ahmadreza Shamimi (https://github.com/shentia)
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。