SKILL.md
Create Unit Test
This skill guides the creation of unit tests to ensuring consistency and correctness.
Workflow
- 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.
- 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.
- 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.
- Run Tests:
- Command: ./gradlew :[module]:testDebugUnitTest - Example: ./gradlew :database:testDebugUnitTest - Tip: Before any commit, run ./gradlew testDebugUnitTest to ensure everything passes.
- 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
testsource set, notandroidTest(unless specifically writing instrumentation tests, which is rare for this skill). - Reliability: Avoid flaky tests. Ensure deterministic behavior.