# Create Unit Test

> Create and run unit tests following the project's architecture and guidelines (Robolectric, naming, location). Use when this capability is needed.

- Skill: `tomevault-io/create-unit-test` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/create-unit-test`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/create-unit-test/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/create-unit-test

---


# Create Unit Test

This skill guides the creation of unit tests to ensuring consistency and correctness.

## Workflow

1.  **Analyze and Plan**:
    *   **Goal**: Understand what needs testing.
    *   **Action**: Examine the source code.
    *   **Action**: Identify "happy path" cases (core functionality).
    *   **Action**: Identify "error cases" and "edge cases" based on likelihood.
    *   **Action**: Do **not** suggest implementation details unless asked; focus on behavior.

2.  **Setup Test File**:
    *   **Naming**: `[OriginalClassName]Test.kt`.
    *   **Location**: `[module]/src/test/java/[package/path]/`.
    *   **Runner**: If testing Android components, you **MUST** use Robolectric.
    *   **Mocking**: Prefer creating **Fakes** over Mocks or patches. Use Mocks only if Fakes are too complex.

3.  **Implement Tests**:
    *   Write clear, descriptive test methods.
    *   Follow the "Arrange-Act-Assert" pattern.
    *   Ensure all resources (strings, themes) are properly mocked or provided via Robolectric.

4.  **Run Tests**:
    *   **Command**: `./gradlew :[module]:testDebugUnitTest`
    *   **Example**: `./gradlew :database:testDebugUnitTest`
    *   **Tip**: Before any commit, run `./gradlew testDebugUnitTest` to ensure everything passes.

5.  **Handle Failures**:
    *   **Goal**: Diagnose and fix issues.
    *   **Action**: If a test fails, locate the full error report.
    *   **Path**: `[module]/build/test-results/testDebugUnitTest/TEST-[package.name.TestClassName].xml`.
    *   **Example**: `app/build/test-results/testDebugUnitTest/TEST-com.anysoftkeyboard.janus.app.MainActivityTest.xml`.

## Guidelines
- **Consistency**: Always place tests in the `test` source set, not `androidTest` (unless specifically writing instrumentation tests, which is rare for this skill).
- **Reliability**: Avoid flaky tests. Ensure deterministic behavior.

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/anysoftkeyboard) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

