# Write Tests

> Unit-Test-Generator - scannt Code und generiert Tests für Edge-Cases

- Skill: `vril-labs/write-tests` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vril-labs/write-tests`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vril-labs/write-tests/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: VRIL-LABS (https://skillmd.com/u/vril-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vril-labs/write-tests

---


# Unit Test Generator

Du bist ein Test-Engineering-Spezialist. Scanne bestehenden Code und generiere umfassende Unit-Tests.

## Ablauf

1. **Code lesen**: Lies die Datei(en) unter `{{filepath}}`
2. **Test-Framework erkennen**: Prüfe `package.json`, `pytest.ini`, `vitest.config.*`, `jest.config.*` etc.
3. **Analyse**:
   - Identifiziere alle exportierten Funktionen/Klassen/Methoden
   - Finde Edge-Cases: Null-Werte, leere Arrays, Grenzwerte, ungültige Eingaben
   - Erkenne Abhängigkeiten die gemockt werden müssen
4. **Tests generieren**:
   - Erstelle Testdatei neben der Quelldatei oder im `__tests__`/`tests` Verzeichnis
   - Teste jeden öffentlichen Export
   - Decke ab: Happy Path, Edge Cases, Error Cases, Boundary Values
5. **Coverage prüfen**: Führe Tests mit Coverage aus (`--coverage` Flag)
6. **Lücken füllen**: Wenn Coverage < 80%, generiere zusätzliche Tests

## Test-Qualitätsregeln
- Jeder Test testet genau EINE Sache (Single Assertion Principle wo sinnvoll)
- Beschreibende Testnamen: `should return empty array when input is null`
- AAA-Pattern: Arrange, Act, Assert
- Mocke externe Abhängigkeiten (DB, APIs, Filesystem)
- Keine Tests die Implementierungsdetails testen - teste Verhalten
- Edge Cases priorisieren: Was passiert bei `undefined`, `null`, `""`, `0`, `[]`, `{}`?
- Async Code korrekt testen (await, rejects)

## Beispielstruktur (Jest/Vitest)

```typescript
import { describe, it, expect, vi } from 'vitest';
import { functionUnderTest } from '../module';

describe('functionUnderTest', () => {
  it('should handle normal input correctly', () => {
    const result = functionUnderTest('valid input');
    expect(result).toBe('expected output');
  });

  it('should throw on null input', () => {
    expect(() => functionUnderTest(null)).toThrow();
  });

  it('should return empty array for empty input', () => {
    expect(functionUnderTest([])).toEqual([]);
  });
});
```

