Test Code Generator
Generates Vitest test code from JSON specifications using boundary value analysis and equivalence partitioning.
Test Code Generator MCP Server
An MCP server that generates Vitest test code based on boundary value analysis and equivalence partitioning from JSON specifications.
Features
- Boundary Value Analysis: Automatically generates boundary values and their adjacent values for continuous ranges
- Multiple Range Support: Handles discontinuous valid ranges (e.g., 0-10, 20-30, 40-50)
- Equivalence Partitioning: Includes all valid and invalid values from categorical data
- Pairwise Testing: Generates efficient test combinations using pairwise method
- Vitest Format: Generates clean test code using
test.eachpattern - Specification Guide: Provides prompts to help create JSON specifications
- Language-Optimized: All processing and output in English for optimal LLM performance
Quick Start
Using npx (No installation required)
# Run directly with npx
npx testing-mcp-vitest
# Configure Claude Desktop as shown below
See QUICKSTART.md for detailed setup instructions.
Installation
Using npx (Recommended)
npx testing-mcp-vitest
Local Installation
# Clone repository
git clone <repository-url>
cd test-code-generator-mcp
# Install dependencies
npm install
# Build
npm run build
Usage
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"test-generator": {
"command": "npx",
"args": ["testing-mcp-vitest"]
}
}
}
Config file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Available Tools
1. generate-test-code
Generates test code from JSON specification.
2. Prompts
create-test-spec: Explains how to create test specificationsboundary-value-example: Provides boundary value analysis examplesequivalence-class-example: Provides equivalence partitioning examples
Specification Format
Basic structure with single range:
{
"type": "model",
"name": "UserRegistration",
"columns": [
{
"name": "age",
"type": "number",
"valueType": "continues",
"values": {
"min": 18,
"max": 120
}
},
{
"name": "userType",
"type": "string",
"valueType": "category",
"values": {
"valid": ["admin", "user", "guest"],
"invalid": ["superuser", "root", ""]
}
}
]
}
Multiple ranges example:
{
"name": "workHours",
"type": "number",
"valueType": "continues",
"values": {
"ranges": [
{ "min": 9, "max": 12 }, // Morning shift
{ "min": 14, "max": 18 } // Afternoon shift
]
}
}
Generated Test Code Example
import { describe, test, expect } from 'vitest';
describe('Tests for UserRegistration', () => {
// Valid cases
test.each([
{ inputs: { age: 18, userType: "admin" }, description: 'Combination 1: Valid case' },
{ inputs: { age: 69, userType: "user" }, description: 'Combination 2: Valid case' },
{ inputs: { age: 120, userType: "guest" }, description: 'Combination 3: Valid case' },
// ... more test cases
])('Valid case: $description', ({ inputs }) => {
// TODO: Import the function or model to test
// import { UserRegistration } from './path/to/UserRegistration';
// TODO: Execute the test subject
// const result = UserRegistration(inputs);
// TODO: Check expected values
// expect(result).toBeDefined();
// expect(result.error).toBeUndefined();
});
// Invalid cases
test.each([
{ inputs: { age: 17, userType: "admin" }, description: 'Combination 4: Invalid case' },
{ inputs: { age: 121, userType: "user" }, description: 'Combination 5: Invalid case' },
{ inputs: { age: 50, userType: "superuser" }, description: 'Combination 6: Invalid case' },
{ inputs: { age: 50, userType: "root" }, description: 'Combination 7: Invalid case' },
{ inputs: { age: 50, userType: "" }, description: 'Combination 8: Invalid case' },
// ... more test cases
])('Invalid case: $description', ({ inputs }) => {
// TODO: Import the function or model to test
// import { UserRegistration } from './path/to/UserRegistration';
// TODO: Verify that an error occurs
// expect(() => UserRegistration(inputs)).toThrow();
// or
// const result = UserRegistration(inputs);
// expect(result.error).toBeDefined();
});
});
Key Features
Full Coverage
- All valid and invalid equivalence class values are included in test cases
- Boundary values include: min-1, min, min+1, middle, max-1, max, max+1
- For multiple ranges, includes gap values between ranges
Efficient Combinations
- 3 or fewer parameters: generates all combinations
- 4 or more parameters: uses pairwise method for efficiency
Multiple Range Support
Useful for:
- Working hours (9-12, 14-18)
- Valid scores (0-40 passing, 60-100 honors)
- Temperature ranges (different valid ranges for different conditions)
- Time slots (morning, afternoon, evening sessions)
Examples
See the examples/ directory for more specification examples:
user-registration.json- Basic model validationcalculate-discount.json- Business logic with multiple parametersmulti-range-validation.json- Complex scheduling with multiple rangesjapanese-postal-code.json- Regional validation patterns
Development
# Development mode
npm run dev
# Build
npm run build
# Production mode
npm start
# Debug mode
DEBUG=1 npm start
Publishing to npm
# Build and publish
npm publish
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
MIT - see LICENSE for details
Support
- GitHub Issues: [Report bugs or request features](/issues)
- Discussions: [Ask questions or share ideas](/discussions)
相关服务器
Scout Monitoring MCP
赞助Put performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
赞助Access financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
ThousandEyes MCP Server
ThousandEyes Network Performance Monitoring MCP Server
Android Preference Editor
Edit Android preferences using adb and Node.js.
MCP Project Initializer
Automates the setup of new AI-powered MCP server development projects.
MCP Utils
A Python package with utilities and helpers for building MCP-compliant servers, often using Flask and Redis.
context-mem
Context optimization for AI coding assistants — 99% token savings via 14 content-aware summarizers, 3-layer search, and progressive disclosure. No LLM dependency.
ui-ticket-mcp
Human-to-AI code review bridge. Review UI prototypes in the browser, then let AI agents fix the code automatically via MCP.
Odoo XML-RPC MCP Server
Interact with Odoo instances using the XML-RPC API. Requires configuration via environment variables or config files.
Aluvia
The Aluvia MCP server exposes browser session management, geo-targeting, and account operations as Model Context Protocol tools for AI agents.
Generic API MCP Server
A generic server to interact with any REST API, allowing you to query data, create items, and call methods.
Package README MCP Servers
A collection of MCP servers for fetching READMEs from various package managers.