ln-743-test-infrastructure

安装量: 109
排名: #7805

安装

npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-743-test-infrastructure

Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-740-quality-setup

Sets up testing frameworks, coverage tools, and sample tests for projects.

Purpose & Scope

Does:

  • Detects project stack to choose appropriate test framework

  • Creates test configuration files

  • Sets up coverage reporting with thresholds

  • Creates sample tests demonstrating patterns

  • Verifies test suite runs successfully

Does NOT:

  • Configure linters (ln-741 does this)

  • Set up pre-commit hooks (ln-742 does this)

  • Write actual application tests (developers do this)

Supported Stacks

| TypeScript/React | Vitest | v8/Istanbul | vitest.config.ts

| .NET | xUnit | Coverlet | *.Tests.csproj

| Python | pytest | pytest-cov | pytest.ini or pyproject.toml

Phase 1: Check Existing Tests

Before creating test infrastructure, check what exists.

Files to Check:

| TypeScript | vitest.config.*, jest.config.*, *.test.ts, *.spec.ts

| .NET | *.Tests.csproj, *.IntegrationTests.csproj

| Python | pytest.ini, conftest.py, tests/, test_*.py

Decision Logic:

  • If complete test setup exists: SKIP (inform user)

  • If partial setup: ASK to extend or replace

  • If no tests: CREATE from templates

Phase 2: Create Test Configuration

TypeScript/React (Vitest)

Create vitest.config.ts:

  • Use v8 coverage provider (faster than Istanbul)

  • Configure jsdom environment for React

  • Set coverage thresholds (80% minimum)

  • Create setup file for testing-library

Dependencies:

npm install -D vitest @vitest/coverage-v8 @testing-library/react @testing-library/jest-dom jsdom

.NET (xUnit)

Create test project:

dotnet new xunit -n {Project}.Tests
dotnet sln add tests/{Project}.Tests

Dependencies (in .csproj):

  • Microsoft.NET.Test.Sdk

  • xunit

  • xunit.runner.visualstudio

  • Moq

  • FluentAssertions

  • coverlet.collector

Python (pytest)

Add to pyproject.toml or create pytest.ini:

  • Configure test discovery paths

  • Set coverage thresholds (80% minimum)

  • Configure coverage reporting

Dependencies:

pip install pytest pytest-cov pytest-asyncio
# OR with uv:
uv add --dev pytest pytest-cov pytest-asyncio

Phase 3: Create Test Directory Structure

TypeScript

src/
├── components/
│   ├── Button.tsx
│   └── Button.test.tsx  # Co-located tests
├── test/
│   └── setup.ts         # Test setup file

.NET

tests/
├── {Project}.Tests/
│   ├── Controllers/
│   │   └── SampleControllerTests.cs
│   ├── Services/
│   └── {Project}.Tests.csproj
└── {Project}.IntegrationTests/  # Optional

Python

tests/
├── __init__.py
├── conftest.py          # Fixtures
├── unit/
│   └── test_sample.py
└── integration/         # Optional

Phase 4: Create Sample Tests

Create one sample test per stack demonstrating:

  • AAA pattern (Arrange-Act-Assert)

  • Test naming conventions

  • Basic assertions

  • Framework-specific patterns

TypeScript Sample Test

Shows:

  • render() from testing-library

  • screen queries

  • Jest-dom matchers

.NET Sample Test

Shows:

  • [Fact] attribute

  • Moq for mocking

  • FluentAssertions syntax

Python Sample Test

Shows:

  • pytest fixtures

  • assert statements

  • parametrized tests (optional)

Phase 5: Verify Test Run

After setup, verify tests work.

TypeScript:

npm test
npm run test:coverage

Expected: Sample test passes, coverage report generated

.NET:

dotnet test
dotnet test --collect:"XPlat Code Coverage"

Expected: Sample test passes, coverage collected

Python:

pytest
pytest --cov=src --cov-report=term-missing

Expected: Sample test passes, coverage report shown

On Failure: Check test configuration, dependencies, verify sample test syntax.

Coverage Requirements

| Lines | 70% | 80%

| Branches | 70% | 80%

| Functions | 70% | 80%

| Statements | 70% | 80%

Configure CI to fail if coverage drops below thresholds.

Critical Rules

RULE 1: Coverage thresholds MUST be configured. No exceptions.

RULE 2: Sample tests MUST pass. Don't create broken examples.

RULE 3: Use AAA pattern (Arrange-Act-Assert) in all sample tests.

RULE 4: Co-locate unit tests with source (TypeScript) or use tests/ directory (.NET, Python).

Definition of Done

Test framework installed and configured Coverage tool configured with 80% threshold Test directory structure created Sample test created and passing npm test / dotnet test / pytest runs successfully Coverage report generates User informed of:

  • How to run tests

  • Where to add new tests

  • Coverage requirements

Reference Files

| vitest_template.ts | Vitest config template

| vitest_setup_template.ts | Test setup file

| react_test_template.tsx | React component test

| xunit_csproj_template.xml | .NET test project

| xunit_test_template.cs | xUnit test example

| pytest_config_template.toml | pytest config

| pytest_test_template.py | pytest test example

| testing_guide.md | Testing best practices

Error Handling

| Vitest not found | Not installed | npm install -D vitest

| jsdom errors | Missing dependency | npm install -D jsdom

| xUnit discovery fails | SDK version mismatch | Update Microsoft.NET.Test.Sdk

| pytest not found | Not in PATH | pip install pytest

| Coverage 0% | Wrong source path | Check coverage.include config

Version: 2.0.0 Last Updated: 2026-01-10

返回排行榜