synthia-test
Version:
Synthia Engine Test Plugin - 提供测试功能的 Synthia 插件
391 lines (296 loc) • 8.71 kB
Markdown
# Synthia Test Plugin
[](https://badge.fury.io/js/synthia-test)
[](https://opensource.org/licenses/MIT)
Synthia Test Plugin 是 Synthia Engine 的测试插件,提供统一的测试运行和覆盖率报告功能。支持多种测试框架,包括 Vitest、Jest、Mocha、Cypress 和 Playwright。
## ✨ 特性
- 🧪 **多框架支持**: 支持 Vitest、Jest、Mocha、Cypress、Playwright
- 🔍 **自动检测**: 自动检测项目中安装的测试框架
- 👀 **监听模式**: 支持文件变化监听和自动重新运行测试
- 📊 **覆盖率报告**: 生成详细的测试覆盖率报告
- 🚀 **CI 模式**: 专为持续集成优化的测试模式
- ⚡ **快速执行**: 优化的测试执行性能
- 🎯 **精确配置**: 灵活的配置选项支持
## 📦 安装
```bash
# 使用 pnpm
pnpm add -D synthia-test
# 使用 npm
npm install -D synthia-test
# 使用 yarn
yarn add -D synthia-test
```
## 🚀 快速开始
### 1. 在 Synthia 配置中启用插件
```typescript
// synthia.config.ts
import { defineConfig } from 'synthia-cli';
import { testPlugin } from 'synthia-test';
export default defineConfig({
plugins: [
{
name: 'test',
plugin: testPlugin({
framework: 'vitest', // 可选,会自动检测
watch: false,
coverage: false,
}),
},
],
});
```
### 2. 运行测试
```bash
# 运行所有测试
synthia test
# 监听模式运行测试
synthia test --watch
# 生成覆盖率报告
synthia test --coverage
# CI 模式运行测试
synthia test --ci
```
## 📋 命令选项
| 选项 | 类型 | 描述 | 默认值 |
| ------------- | ------- | ------------------------------------------------------- | ------------------------------- |
| `--watch` | boolean | 监听模式运行测试 | false |
| `--coverage` | boolean | 生成测试覆盖率报告 | false |
| `--ci` | boolean | CI模式运行测试 | false |
| `--framework` | string | 指定测试框架 (vitest\|jest\|mocha\|cypress\|playwright) | auto |
| `--pattern` | string | 文件匹配模式 | `src/**/*.test.{ts,js,tsx,jsx}` |
| `--config` | string | 指定配置文件 | auto |
| `--ui` | boolean | 启动UI界面 (仅Vitest) | false |
| `--headless` | boolean | 无头模式运行 (仅Cypress\|Playwright) | false |
| `--browser` | string | 指定浏览器 (仅Cypress\|Playwright) | chromium |
| `--threshold` | number | 设置覆盖率阈值 | 80 |
## ⚙️ 配置选项
### TestPluginOptions
```typescript
interface TestPluginOptions {
enabled?: boolean; // 是否启用插件
framework?: 'vitest' | 'jest' | 'mocha' | 'cypress' | 'playwright'; // 测试框架
watch?: boolean; // 默认监听模式
coverage?: boolean; // 默认生成覆盖率
ci?: boolean; // 默认CI模式
pattern?: string; // 文件匹配模式
config?: string; // 配置文件路径
// Vitest 配置
vitest?: {
enabled?: boolean;
config?: string;
ui?: boolean;
};
// Jest 配置
jest?: {
enabled?: boolean;
config?: string;
watchAll?: boolean;
};
// Mocha 配置
mocha?: {
enabled?: boolean;
config?: string;
reporter?: string;
};
// Cypress 配置
cypress?: {
enabled?: boolean;
config?: string;
headless?: boolean;
browser?: string;
};
// Playwright 配置
playwright?: {
enabled?: boolean;
config?: string;
headless?: boolean;
browser?: string;
};
// 覆盖率配置
coverageConfig?: {
enabled?: boolean;
threshold?: number;
reporters?: string[];
output?: string;
};
}
```
## 🎯 支持的测试框架
### Vitest
```bash
# 安装 Vitest
pnpm add -D vitest
# 运行 Vitest 测试
synthia test --framework vitest
# 启动 UI 界面
synthia test --framework vitest --ui
# 监听模式
synthia test --framework vitest --watch
```
### Jest
```bash
# 安装 Jest
pnpm add -D jest
# 运行 Jest 测试
synthia test --framework jest
# 监听模式
synthia test --framework jest --watch
```
### Mocha
```bash
# 安装 Mocha
pnpm add -D mocha
# 运行 Mocha 测试
synthia test --framework mocha
```
### Cypress
```bash
# 安装 Cypress
pnpm add -D cypress
# 运行 Cypress 测试
synthia test --framework cypress
# 无头模式
synthia test --framework cypress --headless
```
### Playwright
```bash
# 安装 Playwright
pnpm add -D playwright
# 运行 Playwright 测试
synthia test --framework playwright
# 无头模式
synthia test --framework playwright --headless
```
## 📊 覆盖率报告
### 配置覆盖率
```typescript
// synthia.config.ts
export default defineConfig({
plugins: [
{
name: 'test',
plugin: testPlugin({
coverageConfig: {
enabled: true,
threshold: 85,
reporters: ['text', 'html', 'json'],
output: 'coverage',
},
}),
},
],
});
```
### 生成覆盖率报告
```bash
# 生成覆盖率报告
synthia test --coverage
# 设置覆盖率阈值
synthia test --coverage --threshold 90
```
## 🔧 高级用法
### 自定义文件模式
```bash
# 只测试特定文件
synthia test --pattern "src/components/**/*.test.ts"
# 测试多个模式
synthia test --pattern "src/**/*.test.{ts,tsx}" --pattern "tests/**/*.spec.js"
```
### 指定配置文件
```bash
# 使用自定义配置文件
synthia test --config custom-test.config.js
```
### CI 集成
```yaml
# .github/workflows/test.yml
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: pnpm install
- run: synthia test --ci --coverage
```
## 📁 项目结构
```
your-project/
├── src/
│ ├── components/
│ │ └── Button.test.tsx
│ ├── utils/
│ │ └── helpers.test.ts
│ └── __tests__/
│ └── integration.test.ts
├── tests/
│ ├── e2e/
│ │ └── user-flow.spec.ts
│ └── fixtures/
│ └── test-data.json
├── coverage/ # 覆盖率报告输出目录
├── vitest.config.ts # Vitest 配置
├── jest.config.js # Jest 配置
└── synthia.config.ts # Synthia 配置
```
## 🐛 故障排除
### 常见问题
**Q: 测试框架未检测到**
```bash
# 确保已安装测试框架
pnpm add -D vitest
# 手动指定框架
synthia test --framework vitest
```
**Q: 覆盖率报告未生成**
```bash
# 确保启用了覆盖率
synthia test --coverage
# 检查配置文件
synthia test --coverage --config vitest.config.ts
```
**Q: 监听模式不工作**
```bash
# 确保文件变化检测正常
synthia test --watch --pattern "src/**/*.test.ts"
```
### 调试模式
```bash
# 启用详细日志
synthia test --verbose
# 查看检测到的框架
synthia test --framework auto
```
## 🤝 贡献
欢迎贡献代码!请查看 [贡献指南](../../CONTRIBUTING.md) 了解详细信息。
### 开发环境设置
```bash
# 克隆仓库
git clone https://github.com/your-org/synthia-engine.git
# 安装依赖
pnpm install
# 运行测试
pnpm test
# 构建插件
pnpm build
```
## 📄 许可证
MIT License - 查看 [LICENSE](../../LICENSE) 文件了解详细信息。
## 🔗 相关链接
- [Synthia Engine 主页](https://github.com/your-org/synthia-engine)
- [插件开发指南](../../docs/plugins/README.md)
- [API 文档](../../docs/api/test-plugin.md)
- [更新日志](../../CHANGELOG.md)
## 📞 支持
如果您遇到问题或有任何疑问,请:
1. 查看 [FAQ](../../docs/faq.md)
2. 搜索 [Issues](https://github.com/your-org/synthia-engine/issues)
3. 创建新的 [Issue](https://github.com/your-org/synthia-engine/issues/new)
4. 加入我们的 [Discord 社区](https://discord.gg/synthia)
---
<p align="center">
Made with ❤️ by the Synthia Team
</p>