Agent skill

Mocking With Mockito

by skydoves in skydoves/android-testing-skills

A skill your agent uses to wire Mockito (the dominant Android mocking framework, exclusively used by androidx itself) into a JVM unit-test suite.

Apache-2.0Auto-check passedTesting & QA

Install Mocking With Mockito

skills CLI
$ npx skills add skydoves/android-testing-skills --skill mocking-with-mockito -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install skydoves/android-testing-skills mocking-with-mockito --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/skydoves/android-testing-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/jvm-tests/mocking/mocking-with-mockito .claude/skills/mocking-with-mockito && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
mocking-with-mockito
GitHub stars
333
Token cost
~4.5k tokens
SKILL.md length
1,218 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses to wire Mockito (the dominant Android mocking framework, exclusively used by androidx itself) into a JVM unit-test suite.

  • Wire Mockito (the dominant Android mocking framework
  • SKILL.md covers When to use this skill, When NOT to use this skill, Prerequisites and Workflow, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Exclusively used by androidx itself) into a JVM unit-test suite

What it does

Mocking With Mockito is an agent skill from skydoves/android-testing-skills. Use this skill to wire Mockito (the dominant Android mocking framework, exclusively used by androidx itself) into a JVM unit-test suite. Covers org.mockito:mockito-core:5.x plus the org.mockito.kotlin:mockito-kotlin:5.x Kotlin DSL — mock<T(), whenever, argumentCaptor<T(), any() / anyOrNull() / eq(), MockitoJUnit.rule() vs MockitoAnnotations.openMocks(this) lifecycle, the inline mock-maker for Kotlin final classes (mock-maker-inline plugin file), @SdkSuppress(minSdkVersion = 28) for instrumented final-class mocks…

Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing and Android development. It works with Android and Kotlin. The repository describes itself as: ⚡️ A set of skills for Android testing: Compose UI, AndroidX Test, JVM unit tests, and ADB. The licence is Apache-2.0.

When your agent uses it

  • Wire Mockito (the dominant Android mocking framework
  • Exclusively used by androidx itself) into a JVM unit-test suite
  • The user mentions whenever
  • Cannot mock final class

Example prompts

  • “/mocking-with-mockito”

What it can do on your machine

Read from SKILL.md and the folder at commit 8665ed5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are kotlin).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com
    • developer.android.com
    • javadoc.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Mocking With Mockito loads about 4.5k tokens when it runs. Until then it costs about 209 tokens; SKILL.md has 1,218 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~209
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from skydoves/android-testing-skills at commit 8665ed5, republished under its Apache-2.0 licence (© skydoves). 1,218 words, ~4,536 tokens.

Download SKILL.mdSave it as .claude/skills/mocking-with-mockito/SKILL.md (or your agent's skills folder).
name
mocking-with-mockito
description
Use this skill to wire Mockito (the dominant Android mocking framework, exclusively used by androidx itself) into a JVM unit-test suite. Covers `org.mockito:mockito-core:5.x` plus the `org.mockito.kotlin:mockito-kotlin:5.x` Kotlin DSL — `mock<T>()`, `whenever`, `argumentCaptor<T>()`, `any()` / `anyOrNull()` / `eq()`, `MockitoJUnit.rule()` vs `MockitoAnnotations.openMocks(this)` lifecycle, the inline mock-maker for Kotlin final classes (`mock-maker-inline` plugin file), `@SdkSuppress(minSdkVersion = 28)` for instrumented final-class mocks, and the suspend-stubbing escape hatch via `runBlocking`. Use when the user mentions `whenever`, `Cannot mock final class`, `InvalidUseOfMatchersException`, `@Mock null`, `MockitoJUnitRunner`, `argumentCaptor`, `mock-maker-inline`, or asks how to mock with mockito-kotlin.
license
Apache-2.0. See LICENSE for complete terms.
metadata.author
Jaewoong Eum (skydoves)
metadata.keywords
android-testing, mockito, mockito-kotlin, jvm-unit-tests, mock-maker-inline, argumentCaptor, whenever, MockitoJUnit-rule, final-class-mocking, openMocks

Mocking with Mockito — The androidx-Native Mocking Stack

Mockito is the mocking framework androidx itself uses — 400+ test files import org.mockito across the AOSP checkout, while io.mockk returns zero hits. New Android code that wants to "match what Google does" picks Mockito + the mockito-kotlin Kotlin DSL. This skill documents the exact dependency matrix, the three setup styles, the Kotlin DSL surface, and the inline-mock-maker plumbing required for Kotlin final classes.

When to use this skill

  • The user is starting a new test suite in a Kotlin Android module and asks "what mocking library should I use".
  • The user reports Cannot mock/spy class … final class from Mockito 4.x and needs the mock-maker-inline configuration.
  • The user reports InvalidUseOfMatchersException from mixing raw values with any() / eq().
  • The user is wrestling with the when keyword clash in Kotlin (`when`(mock.foo())) and wants the whenever DSL.
  • The user wants argumentCaptor<T>() with firstValue / lastValue / allValues instead of ArgumentCaptor.forClass(...).
  • The user is migrating from MockitoAnnotations.initMocks(this) to openMocks(this) or the MockitoJUnit.rule() approach.
  • The user is mocking a final class on an instrumented test on API < 28.

When NOT to use this skill

  • The user wants coEvery / coVerify for suspend functions, deep singleton mocking via mockkObject, or static mocking via mockkStatic — use ../mocking-with-mockk/SKILL.md.
  • The user is choosing between fakes and mocks at the design level — use ../../../fundamentals/doubles/picking-test-doubles/SKILL.md. Per /test-doubles, fakes are preferred over mocks for behaviour-heavy collaborators.
  • The runner / Gradle matrix isn't set up yet — start with ../../runner/configuring-junit4-on-android/SKILL.md.
  • The user wants runTest-aware testing for coroutines — see ../../coroutines/testing-coroutines-with-runtest/SKILL.md.

Prerequisites

  • The base test wiring from ../../runner/configuring-junit4-on-android/SKILL.md is already in place (@RunWith(AndroidJUnit4::class), androidx.test.ext:junit:1.3.0, JUnit 4.13.2).
  • A Kotlin module on JDK 11+ (Mockito 5.x raised the JDK floor to Java 11).
  • A MainDispatcherRule is installed if any code-under-test touches Dispatchers.Main — see the runner skill.

Workflow

  • 1. Add the Mockito + mockito-kotlin coordinates. Mockito 5.x is the recommended baseline because the inline mock-maker is enabled by default — no plugin file or mockito-inline swap needed for Kotlin final classes:
kotlin
dependencies {
    testImplementation("org.mockito:mockito-core:5.14.2")
    testImplementation("org.mockito.kotlin:mockito-kotlin:5.4.0")

    // Instrumented final-class mocks (API 28+ only — see step 7)
    androidTestImplementation("org.mockito:mockito-android:5.14.2")
    androidTestImplementation("org.mockito.kotlin:mockito-kotlin:5.4.0")
}

mockito-kotlin is NOT a fork — it is a thin DSL helper layer that delegates straight to mockito-core. Both must be on the classpath.

  • 2. Pick a mock-lifecycle style. There are three idiomatic options. Prefer the rule for new code; reserve openMocks for cases where the test class can't claim @RunWith.
kotlin
// (a) JUnit4 rule — preferred. No runner ownership, plays nicely with @RunWith(AndroidJUnit4::class).
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()

// (b) Manual openMocks — works everywhere.
private lateinit var closeable: AutoCloseable
@Before fun setUp() { closeable = MockitoAnnotations.openMocks(this) }
@After  fun tearDown() { closeable.close() }

// (c) JUnit5 extension (only if the project is on JUnit 5 via the Vintage engine).
@ExtendWith(MockitoExtension::class)

The deprecated MockitoAnnotations.initMocks(this) returns void and leaks inline-mock resources. Always use openMocks(this) and close the returned AutoCloseable in @After.

  • 3. Declare mocks and stub them with the mockito-kotlin DSL. The Kotlin-friendly entry points live under org.mockito.kotlin.*:
kotlin
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.atLeastOnce
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever

class UserViewModelTest {
    @get:Rule val mockitoRule = MockitoJUnit.rule()
    @get:Rule val mainDispatcherRule = MainDispatcherRule()

    private val repo: UserRepository = mock()
    private val analytics: Analytics = mock {
        on { isEnabled() } doReturn true
    }

    @Test fun loadsUserAndLogs() = runTest {
        whenever(repo.findById(7L)) doReturn User("Jane")

        val vm = UserViewModel(repo, analytics)
        vm.load(7L)
        advanceUntilIdle()

        val captor = argumentCaptor<AnalyticsEvent>()
        verify(analytics, atLeastOnce()).log(captor.capture())
        assertThat(captor.lastValue.name).isEqualTo("user_loaded")
        verify(repo).findById(eq(7L))
    }
}

Highlights:

  • mock<T>() is reified — no T::class.java ceremony.

  • mock { on { … } doReturn … } is a builder block — collapses a chain of whenever calls when stubbing at construction time.

  • whenever(...) replaces raw Mockito's `when`(...) (which requires backticks because when is a Kotlin keyword).

  • argumentCaptor<T>() returns a captor with firstValue / secondValue / lastValue / allValues properties — no getValue() ceremony.

  • any(), anyOrNull(), eq() from org.mockito.kotlin.* are null-safe in Kotlin (raw Mockito's any() returns Java null, which crashes a Kotlin non-nullable parameter).

  • 4. Honour the any/eq matcher mixing rule. If ANY argument uses a matcher (any(), eq(), argThat { … }), ALL arguments must be matchers. Mixing raw values with any() raises InvalidUseOfMatchersException: Misplaced or misused argument matcher. Wrap raw values in eq(...):

kotlin
verify(repo).save(any(), eq("identifier"))   // RIGHT — all args are matchers
verify(repo).save(any(), "identifier")        // WRONG — InvalidUseOfMatchersException
  • 5. Stub suspend functions from any suspend context. Mockito does not have first-class suspend support. The compiler accepts whenever(mock.suspendFn()) only when the call site is itself suspending. runTest { … } already provides that suspend context — wrapping a stub in runBlocking { … } inside runTest { … } blocks the test dispatcher and can deadlock under MainDispatcherRule. Pick one or the other, not both. This is the chief ergonomic friction with Mockito; if the codebase is suspend-heavy, weigh ../mocking-with-mockk/SKILL.md instead.
kotlin
@Test fun loadsUser() = runTest {
    whenever(repo.fetchUser(1)) doReturn User("Jane")   // RIGHT — runTest IS a suspend context
    val vm = UserViewModel(repo)
    vm.load(1)
    advanceUntilIdle()
    verify(repo).fetchUser(1)
}

For non-suspending tests (no runTest), use runBlocking instead — but never both:

kotlin
@Test fun loadsUser() = runBlocking {
    whenever(repo.fetchUser(1)) doReturn User("Jane")
    val result = UserService(repo).get(1)
    assertThat(result.name).isEqualTo("Jane")
}
  • 6. For Mockito 4.x, install the inline mock-maker via the resource file. Mockito 5.x already enables it by default. For older versions, drop a single-line file at src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker containing:
text
mock-maker-inline

This is exactly what androidx ships in compose/material/material/src/androidHostTest/resources/mockito-extensions/org.mockito.plugins.MockMaker, compose/foundation/foundation/.../mockito-extensions/..., and room3/room3-runtime/.../mockito-extensions/.... The alternative is swapping mockito-core for mockito-inline in Gradle (which transitively pulls mockito-core).

Inline still has limits: final private members, equals()/hashCode(), String, and Class cannot be mocked.

  • 7. For instrumented tests on API < 28, guard final-class mocks. mockito-android uses dexmaker, which only supports final-class mocking on API 28+. This is a dexmaker constraint, not a Mockito version constraint — upgrading to Mockito 5.x does not lift it; only Android API 28 (P) introduced the JVMTI hooks dexmaker needs. The androidx convention is to add @SdkSuppress(minSdkVersion = 28) to the test class with a one-line comment. Real example from compose/ui/ui/src/androidHostTest/kotlin/androidx/compose/ui/input/IndirectPointerEventWithInputDeviceMockTest.kt:
kotlin
import androidx.test.filters.SdkSuppress

@RunWith(MockitoJUnitRunner::class)
@SdkSuppress(minSdkVersion = 28)   // Mocks for final classes can only be done on 28 and higher
class IndirectPointerEventWithInputDeviceMockTest { /* ... */ }
  • 8. Apply Strictness.STRICT_STUBS for new test classes. Strict stubs surface unused stubs and argument mismatches as failures, catching tests that "pass" because they don't actually exercise the stub. Wire it via the rule:
kotlin
@get:Rule val mockitoRule: MockitoRule =
    MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS)
  • 9. Verify the suite runs and produces the expected interactions. ./gradlew :<module>:testDebugUnitTest --tests com.example.UserViewModelTest. Failed verifications produce the canonical "Wanted but not invoked" / "Argument(s) are different" output — these messages are usually self-diagnosing.
Show full SKILL.md (415 more words)Show less

Patterns

Pattern: WRONG vs RIGHT — Kotlin when keyword clash
kotlin
// WRONG — raw Mockito from Kotlin
import org.mockito.Mockito.`when`

`when`(repo.fetch()).thenReturn(User("Jane"))
// WRONG because: `when` requires backtick-escaping in Kotlin (it is a reserved keyword),
// the import line is awkward, and any() returns Java null which crashes Kotlin
// non-nullable parameters. mockito-kotlin's whenever / null-safe matchers solve both.
kotlin
// RIGHT — mockito-kotlin DSL
import org.mockito.kotlin.whenever
import org.mockito.kotlin.doReturn

whenever(repo.fetch()) doReturn User("Jane")
Pattern: WRONG vs RIGHT — argument captor verbosity
kotlin
// WRONG
import org.mockito.ArgumentCaptor

val captor = ArgumentCaptor.forClass(User::class.java)
verify(repo).save(captor.capture())
assertEquals("Jane", captor.value.name)
// WRONG because: ArgumentCaptor.forClass requires .java, captor.value collides with
// Kotlin's value class semantics for some types, and there's no firstValue/lastValue
// accessor for sequences of captures.
kotlin
// RIGHT
import org.mockito.kotlin.argumentCaptor

val captor = argumentCaptor<User>()
verify(repo, atLeastOnce()).save(captor.capture())
assertEquals("Jane", captor.lastValue.name)
val all: List<User> = captor.allValues
Pattern: WRONG vs RIGHT — final-class mocking on Mockito 4.x
kotlin
// WRONG — Mockito 4.x without the inline plugin, mocking a Kotlin final class
val service: PaymentService = mock()
// WRONG because: Kotlin classes are final by default. The classic subclass mock-maker
// throws "Cannot mock/spy class com.example.PaymentService — final class". Either
// upgrade to Mockito 5.x (inline by default) or install the plugin file.
text
// RIGHT — src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
mock-maker-inline
kotlin
// Mockito 5.x: nothing else to do; mock<PaymentService>() works out of the box.
Pattern: WRONG vs RIGHT — strict stubs catch the dead stub
kotlin
// WRONG — silent passing test
class MyTest {
    @get:Rule val mockitoRule = MockitoJUnit.rule()   // default lenient

    @Test fun loadsUser() {
        whenever(repo.findById(7L)) doReturn User("Jane")
        val vm = UserViewModel(repo)
        vm.load(8L)                                    // wrong id — stub is never used
        verify(repo).findById(any())                   // passes because findById was called
    }
}
// WRONG because: the test claims to verify behaviour for id=7 but actually exercises id=8.
// The stub is dead. STRICT_STUBS catches this with PotentialStubbingProblem.
kotlin
// RIGHT
@get:Rule val mockitoRule: MockitoRule =
    MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS)

// Now PotentialStubbingProblem fires at runtime if the stub argument doesn't match
// what the SUT actually calls.

Mandatory rules

  • MUST add both org.mockito:mockito-core:5.x AND org.mockito.kotlin:mockito-kotlin:5.x for Kotlin tests. The DSL artifact is non-optional in any modern Kotlin codebase.
  • MUST use whenever(...) from org.mockito.kotlin.*, not `when`(...) from org.mockito.Mockito. The keyword-escape form is a code smell.
  • MUST use org.mockito.kotlin's any() / anyOrNull() / eq() for Kotlin tests. Raw Mockito's any() returns Java null and crashes Kotlin non-nullable parameters at runtime.
  • MUST stub suspend functions from a suspending context — either runTest { whenever(...) doReturn ... } (preferred, integrates with virtual time) or runBlocking { ... } for non-runTest setups. MUST NOT nest runBlocking inside runTest — it blocks the test dispatcher and can deadlock under MainDispatcherRule. Mockito has no native suspend-stubbing surface; either suspend context is sufficient.
  • MUST use MockitoAnnotations.openMocks(this) and close the returned AutoCloseable in @After. MUST NOT use the deprecated MockitoAnnotations.initMocks(this).
  • MUST ship mockito-extensions/org.mockito.plugins.MockMaker with literal contents mock-maker-inline for any pre-5.x project that mocks Kotlin final classes. Mockito 5.x ships inline by default and needs nothing.
  • MUST annotate test classes that mock final classes with @SdkSuppress(minSdkVersion = 28) when they run as androidTestImplementation against mockito-android.
  • MUST keep matchers consistent within a single verify/whenever call: all matchers OR no matchers. Wrap raw values in eq(...) to mix.
  • MUST prefer fakes over mocks for collaborators with behaviour (per developer.android.com/training/testing/fundamentals/test-doubles: "fakes ... are preferred"). Use Mockito for verifying interactions, not for re-implementing behaviour.
  • MUST NOT mix Mockito.mock(...) and org.mockito.kotlin.mock<T>() in the same file — pick one and be consistent. Prefer the kotlin DSL.
  • PREFERRED: apply Strictness.STRICT_STUBS to catch dead stubs and argument mismatches. Lenient mode hides bugs.

Verification

  • ./gradlew :<module>:testDebugUnitTest --tests <YourTestClass> passes.
  • grep -rn "org.mockito.Mockito.\when`" src/test src/androidTestreturns NO matches (usewhenever` instead).
  • grep -rn "MockitoAnnotations.initMocks" src/test src/androidTest returns NO matches (use openMocks instead).
  • grep -rn "ArgumentCaptor.forClass" src/test src/androidTest returns NO matches in new code (use argumentCaptor<T>() instead).
  • If the project is on Mockito 4.x and mocks a Kotlin final class, the file src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker exists with literal contents mock-maker-inline.
  • MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS) is applied (or the @MockitoSettings(strictness = Strictness.STRICT_STUBS) JUnit5 annotation).
  • No unused stubs reported under Strictness.STRICT_STUBS.
  • Final-class instrumented tests carry @SdkSuppress(minSdkVersion = 28).

References

© skydoves, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in jvm-tests/mocking/mocking-with-mockito of skydoves/android-testing-skills.

Open the folder on GitHubat commit 8665ed5

Compare with similar skills

Mocking With Mockito next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Mocking With Mockito compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mocking With Mockito this skillskydoves/android-testing-skills333—~4.5kAutomated safety check: PassApache-2.0
Quality Test Pilotnekomangaorg/Neko2.8k—~1.1kAutomated safety check: PassApache-2.0
Improve Code Coveragealexvanyo/composelife267—~1.1kAutomated safety check: PassApache-2.0
Android Testingrcosteira79/android-skills151—~2.1kAutomated safety check: PassMIT
Pos Testswoocommerce/woocommerce-android319—~216Automated safety check: NotesGPL-2.0
Store Testswoocommerce/woocommerce-android319—~239Automated safety check: NotesGPL-2.0

Similar skills

  • Quality Test Pilot

    nekomangaorg/Neko

    Writes high-quality unit tests for Kotlin Android codebases to increase meaningful test coverage.

    2.8k GitHub stars~1.1k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Improve Code Coverage

    alexvanyo/composelife

    Helps increment code coverage in this Kotlin Multiplatform project.

    267 GitHub stars~1.1k tokensUpdated today
    MobileAuto-check passed
  • Android Testing

    rcosteira79/android-skills

    A skill your agent uses when writing, fixing, or refactoring Android/KMP code in Kotlin — a test-first (RED-GREEN-REFACTOR) foundation plus the Android/KMP test traps: Compose-test dispatching…

    151 GitHub stars~2.1k tokensUpdated 19 days ago
    Testing & QAAuto-check passed
  • Pos Tests

    woocommerce/woocommerce-android

    POS unit testing patterns (WooPosCoroutineTestRule, runTest, advanceUntilIdle, mockito-kotlin, event bus mocking, analytics verification).

    319 GitHub stars~216 tokensUpdated yesterday
    Testing & QAAuto-check: notes
  • Store Tests

    woocommerce/woocommerce-android

    Main app unit testing patterns (BaseUnitTest, BDD naming, mockito-kotlin, AssertJ, StateFlow/LiveData capture, coroutine dispatchers).

    319 GitHub stars~239 tokensUpdated yesterday
    Testing & QAAuto-check: notes
  • Android Audio E2E

    hyochan/react-native-nitro-sound

    Build and run device-backed Android end-to-end checks for react-native-nitro-sound permissions, recording, playback, listeners, pause/resume, seek, speed, audio focus, lifecycle behavior, and rapid…

    961 GitHub stars~814 tokensUpdated 9 days ago
    MobileAuto-check passed

More from skydoves/android-testing-skills

All 50 skills in this repo
  • Asserting Bounds And Dimensions

    skydoves/android-testing-skills

    A skill your agent uses to verify Compose layout measurements from a UI test using assertWidthIsEqualTo, assertHeightIsEqualTo, assertWidthIsAtLeast, assertHeightIsAtLeast…

    333 GitHub stars~3.3k tokensUpdated 4 mo ago
    Auto-check passed
  • Asserting Node State And Text

    skydoves/android-testing-skills

    A skill your agent uses to verify a Compose semantics node's properties from a UI test using assertExists, assertDoesNotExist, assertIsDisplayed, assertIsNotDisplayed, assertIsDeactivated…

    333 GitHub stars~3.6k tokensUpdated 4 mo ago
    Auto-check passed
  • Capturing Preview Screenshots In CI

    skydoves/android-testing-skills

    A skill your agent uses to render every Jetpack Compose @Preview as a screenshot on a real Android device or emulator and publish a browsable HTML catalog from CI.

    333 GitHub stars~4.5k tokensUpdated 4 mo ago
    Auto-check: notes
  • Capturing Screenshots And Screenrecord

    skydoves/android-testing-skills

    A skill your agent uses to capture visual artefacts from a device for test failures, golden image generation, QA repro, and demo videos.

    333 GitHub stars~3.7k tokensUpdated 4 mo ago
    Auto-check passed
  • Choosing Test Rule Vs Runtest

    skydoves/android-testing-skills

    A skill your agent uses to pick the correct Compose UI test entry point.

    333 GitHub stars~4.5k tokensUpdated 4 mo ago
    Auto-check passed
  • Choosing What To Test

    skydoves/android-testing-skills

    A skill your agent uses to pick which behaviors to cover in an Android test suite using Google's five-category state vocabulary plus the explicit "what NOT to test" list from…

    333 GitHub stars~4.6k tokensUpdated 4 mo ago
    Auto-check passed

Works with

Questions about Mocking With Mockito

What does Mocking With Mockito do?

A skill your agent uses to wire Mockito (the dominant Android mocking framework, exclusively used by androidx itself) into a JVM unit-test suite. Mocking With Mockito is an agent skill from skydoves/android-testing-skills. Use this skill to wire Mockito (the dominant Android mocking framework, exclusively used by androidx itself) into a JVM unit-test suite.

When should I use Mocking With Mockito?

Mocking With Mockito fits situations like: wire Mockito (the dominant Android mocking framework; exclusively used by androidx itself) into a JVM unit-test suite; the user mentions whenever; cannot mock final class.

How do I install Mocking With Mockito in Claude Code?

Run `npx skills add skydoves/android-testing-skills --skill mocking-with-mockito -a claude-code`. Or copy the skill folder (jvm-tests/mocking/mocking-with-mockito in skydoves/android-testing-skills) into .claude/skills/mocking-with-mockito in your project. Claude Code loads it when a task matches its description.

How do I install Mocking With Mockito in Codex?

Run `npx skills add skydoves/android-testing-skills --skill mocking-with-mockito -a codex`. Or copy the skill folder (jvm-tests/mocking/mocking-with-mockito in skydoves/android-testing-skills) into .agents/skills/mocking-with-mockito in your project. Codex loads it when a task matches its description.

Can I use Mocking With Mockito in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add skydoves/android-testing-skills --skill mocking-with-mockito -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mocking-with-mockito, .gemini/skills/mocking-with-mockito, .github/skills/mocking-with-mockito and .opencode/skills/mocking-with-mockito in your project.

What does Mocking With Mockito need to run?

SKILL.md names no scripts, command-line tools or credentials: Mocking With Mockito is instructions for the agent only.

Does Mocking With Mockito access the network?

SKILL.md names 3 domains. As links in the text: github.com, developer.android.com and javadoc.io. This is read from the text; nothing was executed.

Is Mocking With Mockito safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Mocking With Mockito use?

Mocking With Mockito is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Mocking With Mockito use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Mocking With Mockito?

Skills that share tags, products or a category with Mocking With Mockito: Quality Test Pilot (nekomangaorg/Neko, 2.8k stars), Improve Code Coverage (alexvanyo/composelife, 267 stars), Android Testing (rcosteira79/android-skills, 151 stars) and Pos Tests (woocommerce/woocommerce-android, 319 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mocking With Mockito?

skydoves (a GitHub user) maintains it in skydoves/android-testing-skills, which has 333 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on May 25, 2026.

Source: skydoves/android-testing-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.