Agent skill

Running Instrumented Tests With Androidjunit4

by skydoves in skydoves/android-testing-skills

A skill your agent uses to stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner, the correct AndroidJUnitRunner Gradle wiring, and supporting infrastructure…

Apache-2.0Auto-check passedTesting & QA

Install Running Instrumented Tests With Androidjunit4

skills CLI
$ npx skills add skydoves/android-testing-skills --skill running-instrumented-tests-with-androidjunit4 -a claude-code

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

GitHub CLI
$ gh skill install skydoves/android-testing-skills running-instrumented-tests-with-androidjunit4 --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/instrumentation/runner/running-instrumented-tests-with-androidjunit4 .claude/skills/running-instrumented-tests-with-androidjunit4 && 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
running-instrumented-tests-with-androidjunit4
GitHub stars
333
Token cost
~4.5k tokens
SKILL.md length
1,200 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses to stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner, the correct AndroidJUnitRunner Gradle wiring, and supporting infrastructure…

  • Stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner
  • SKILL.md covers When to use this skill, When NOT to use this skill, Prerequisites and Workflow, plus 4 more sections
  • Calls adb
  • The correct AndroidJUnitRunner Gradle wiring

What it does

Running Instrumented Tests With Androidjunit4 is an agent skill from skydoves/android-testing-skills. Use this skill to stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner, the correct AndroidJUnitRunner Gradle wiring, and supporting infrastructure (Test Orchestrator, runtime permission grants, size annotations, SDK suppression, hermetic animation defaults). Covers androidx.test:core:1.7.0 / :runner:1.7.0 / :rules:1.7.0 / androidx.test.ext:junit:1.3.0 coordinates, androidx.test.platform.app.InstrumentationRegistry, and the androidTestUtil configuration trap for…

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 Meeting notes and agendas. It works with Android, Gradle and JUnit. 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

  • Stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner
  • The correct AndroidJUnitRunner Gradle wiring
  • Supporting infrastructure (Test Orchestrator
  • Runtime permission grants

Example prompts

  • “why is my orchestrator not running”
  • “how do I pass -e args to the test”
  • “how do I grant a runtime permission in a test”
  • “/running-instrumented-tests-with-androidjunit4”

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

    Shell commands in SKILL.md call:

    • adb

    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):

    • developer.android.com

    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

Running Instrumented Tests With Androidjunit4 loads about 4.5k tokens when it runs. Until then it costs about 221 tokens; SKILL.md has 1,200 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~221
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,200 words, ~4,550 tokens.

Download SKILL.mdSave it as .claude/skills/running-instrumented-tests-with-androidjunit4/SKILL.md (or your agent's skills folder).
name
running-instrumented-tests-with-androidjunit4
description
Use this skill to stand up an Android instrumentation test source set with the canonical `AndroidJUnit4` runner, the correct `AndroidJUnitRunner` Gradle wiring, and supporting infrastructure (Test Orchestrator, runtime permission grants, size annotations, SDK suppression, hermetic animation defaults). Covers `androidx.test:core:1.7.0` / `:runner:1.7.0` / `:rules:1.7.0` / `androidx.test.ext:junit:1.3.0` coordinates, `androidx.test.platform.app.InstrumentationRegistry`, and the `androidTestUtil` configuration trap for `androidx.test:orchestrator`. Use when the user reports `Test runner not found`, `AndroidJUnit4 deprecated`, `InstrumentationRegistry deprecated`, asks "why is my orchestrator not running", "how do I pass `-e` args to the test", "how do I grant a runtime permission in a test", or "instrumented test won't compile".
license
Apache-2.0. See LICENSE for complete terms.
metadata.author
Jaewoong Eum (skydoves)
metadata.keywords
android-instrumentation-test, androidx-test, AndroidJUnit4, AndroidJUnitRunner, test-orchestrator, InstrumentationRegistry, GrantPermissionRule, SdkSuppress…

Running Instrumented Tests with AndroidJUnit4 — Get the Runner Stack Right

Instrumentation tests fail before any assertion runs when the runner stack is misconfigured: a deprecated AndroidJUnit4 import, the orchestrator on androidTestImplementation instead of androidTestUtil, the deprecated androidx.test.InstrumentationRegistry instead of androidx.test.platform.app.InstrumentationRegistry. This skill encodes the exact dependency matrix, the runner Gradle config, and the supporting annotations and rules.

When to use this skill

  • The IDE flags androidx.test.runner.AndroidJUnit4 as @Deprecated, or the test compiles but emits the deprecation warning.
  • am instrument returns INSTRUMENTATION_FAILED: <pkg>/androidx.test.runner.AndroidJUnitRunner or Test runner not found.
  • Test Orchestrator is configured in Gradle but tests still share a single instrumentation process (orchestrator silently disabled).
  • The user passes -e size small / -e package com.foo via am instrument and the test ignores it — RunnerArgs is unwired.
  • A test needs ACCESS_FINE_LOCATION / RECORD_AUDIO etc. and the user is hand-rolling permission grants from adb.
  • The user wants to skip a test below API 26 and is searching for the annotation.

When NOT to use this skill

  • The user is launching an Activity or driving lifecycle — see ../../scenarios/launching-activities-with-activityscenario/SKILL.md.
  • The user is interacting with Views — see ../../espresso/writing-espresso-tests/SKILL.md.
  • The user is driving system UI or another app — see ../../uiautomator/cross-app-tests-with-uiautomator/SKILL.md.
  • The user runs JVM (Robolectric / pure JUnit) tests — see ../../../jvm-tests/runner/configuring-junit4-on-android/SKILL.md.
  • The user is choosing what to test in the first place — see ../../../fundamentals/strategies/applying-testing-strategies/SKILL.md.

Prerequisites

  • Android Gradle Plugin module (com.android.application or com.android.library).
  • A src/androidTest/ source set on disk (./gradlew :module:connectedDebugAndroidTest should resolve).
  • An emulator or physical device (or Firebase Test Lab / managed devices) — the runner cannot execute on the JVM.
  • JUnit 4 on the test classpath (junit:junit:4.13.2); JUnit 5 requires a Vintage engine bridge and is out of scope.

Workflow

  • 1. Pin the AndroidX Test artifacts on androidTestImplementation. These are the canonical 2026 GA versions per docs/CORPUS.md H.1:
kotlin
dependencies {
    androidTestImplementation("androidx.test:core:1.7.0")
    androidTestImplementation("androidx.test:runner:1.7.0")
    androidTestImplementation("androidx.test:rules:1.7.0")
    androidTestImplementation("androidx.test.ext:junit:1.3.0")
    androidTestImplementation("androidx.test.ext:junit-ktx:1.3.0")
    androidTestImplementation("androidx.test.ext:truth:1.7.0")
}

androidx.test.ext:junit is the artifact that owns the non-deprecated AndroidJUnit4 runner and the non-deprecated ActivityScenarioRule. androidx.test:runner still ships the legacy AndroidJUnit4 (deprecated) — never import from there. See tasks/research/R1-androidx-test-core.md lines 481-490.

  • 2. Set the testInstrumentationRunner in the module's android.defaultConfig. The runner FQCN is androidx.test.runner.AndroidJUnitRunner — note this is the runner class, distinct from the deprecated AndroidJUnit4 test runner annotation. From tasks/research/R1-androidx-test-core.md lines 270-289:
kotlin
android {
    defaultConfig {
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        // Optional: pass `-e key value` args to every run via Gradle
        testInstrumentationRunnerArguments["clearPackageData"] = "true"
    }
    testOptions {
        animationsDisabled = true                  // hermetic — see Pattern below
    }
}
  • 3. Annotate test classes with @RunWith(AndroidJUnit4::class) from androidx.test.ext.junit.runners. This is the only correct import:
kotlin
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class LoginActivityTest {
    @Test fun loginSucceeds() { /* ... */ }
}

The deprecated androidx.test.runner.AndroidJUnit4 is @Deprecated at runner-1.7.0/androidx/test/runner/AndroidJUnit4.java:43-44. It still works at runtime but the IDE warns and codemods will replace it.

  • 4. Read instrumentation arguments via androidx.test.platform.app.InstrumentationRegistry. The legacy androidx.test.InstrumentationRegistry (no platform.app) is @Deprecated and @InlineMe'd to the canonical class — see tasks/research/R1-androidx-test-core.md lines 142-153:
kotlin
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.core.app.ApplicationProvider

val instrumentation = InstrumentationRegistry.getInstrumentation()
val args: Bundle = InstrumentationRegistry.getArguments()       // -e key value extras
val targetContext: Context = ApplicationProvider.getApplicationContext()
val testContext: Context = instrumentation.context             // package context of the test APK

InstrumentationRegistry.getArguments() exposes the -e key/value pairs from am instrument -e key value, e.g. -e size small -e numShards 4. The canonical list of supported keys is in runner-1.7.0/androidx/test/internal/runner/RunnerArgs.java lines 54-99 (see tasks/research/R1-androidx-test-core.md lines 295-336).

  • 5. Annotate tests with @SmallTest / @MediumTest / @LargeTest from androidx.test.filters. Used together with am instrument -e size small to filter by speed envelope. From the package KDocs: SmallTest ≤200ms, MediumTest ≤1000ms, LargeTest >1000ms. Sibling annotations: @FlakyTest, @RequiresDevice, @Suppress.
kotlin
import androidx.test.filters.SmallTest
import androidx.test.filters.SdkSuppress

@RunWith(AndroidJUnit4::class)
@SmallTest
class LoginViewModelTest { /* ... */ }

@Test
@SdkSuppress(minSdkVersion = 26)
fun usesApi26OnlyApi() { /* ... */ }

@SdkSuppress(minSdkVersion, maxSdkVersion, excludedSdks, codeName) lives at runner-1.7.0/androidx/test/filters/SdkSuppress.java:39-58. Tests outside the API range are skipped (assumption-failure, exit code -4), not failed.

  • 6. Add Test Orchestrator on androidTestUtil — NOT androidTestImplementation. This is the most common single misconfiguration in the runner stack. Test Orchestrator runs each @Test in its own instrumentation process so a crash kills only that one test, with optional clearPackageData between tests:
kotlin
dependencies {
    androidTestUtil("androidx.test:orchestrator:1.6.1")  // installs orchestrator APK on device
    androidTestUtil("androidx.test:services:1.6.0")      // required for clearPackageData
}

android {
    testOptions {
        execution = "ANDROIDX_TEST_ORCHESTRATOR"
    }
    defaultConfig {
        testInstrumentationRunnerArguments["clearPackageData"] = "true"
    }
}

androidTestUtil is a special AGP configuration that installs helper APKs on the device prior to running tests. Putting orchestrator on androidTestImplementation compiles, silently does nothing, and the test still runs in a single shared process. See tasks/research/R1-androidx-test-core.md lines 683-687.

  • 7. Grant runtime permissions with GrantPermissionRule.grant(...) instead of adb shell pm grant. The rule ships in androidx.test:rules and grants permissions for the duration of the test class:
kotlin
import androidx.test.rule.GrantPermissionRule
import org.junit.Rule

@get:Rule
val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(
    android.Manifest.permission.ACCESS_FINE_LOCATION,
    android.Manifest.permission.RECORD_AUDIO,
)

The rule is implemented at rules-1.7.0/androidx/test/rule/GrantPermissionRule.java. On API 23+ it uses UiAutomation.grantRuntimePermission; on older devices the permission must already be granted in the manifest (the rule is a no-op).

  • 8. Disable animations for hermetic runs. testOptions { animationsDisabled = true } toggles window_animation_scale, transition_animation_scale, and animator_duration_scale to 0 for the duration of the test run, then restores the previous values on teardown. Without this, tap-to-focus, ripple, and Activity transitions race with assertions.

  • 9. (Optional) Order multiple @Rules with @Rule(order = N). Lower order numbers evaluate outer first. Hilt requires @HiltAndroidRule at order = 0:

kotlin
@get:Rule(order = 0) val hiltRule = HiltAndroidRule(this)
@get:Rule(order = 1) val activityRule = ActivityScenarioRule(LoginActivity::class.java)
  • 10. Run. From the host:
bash
./gradlew :app:connectedDebugAndroidTest
# or via adb directly:
adb shell am instrument -w -r \
  -e size small \
  -e clearPackageData true \
  com.example.app.test/androidx.test.runner.AndroidJUnitRunner

-w (wait) is required for the exit code to be meaningful. Without it, $? is 0 even on test failure. See docs/CORPUS.md I.5.

Show full SKILL.md (479 more words)Show less

Patterns

Pattern: WRONG vs RIGHT — AndroidJUnit4 import
kotlin
// WRONG
import androidx.test.runner.AndroidJUnit4   // @Deprecated since androidx.test:runner 1.x
@RunWith(AndroidJUnit4::class)
class FooTest
// WRONG because: this class is @Deprecated at runner-1.7.0/.../AndroidJUnit4.java:43-44.
// The IDE flags it; codemods replace it; the doc explicitly redirects to ext.junit.
kotlin
// RIGHT
import androidx.test.ext.junit.runners.AndroidJUnit4
@RunWith(AndroidJUnit4::class)
class FooTest
Pattern: WRONG vs RIGHT — InstrumentationRegistry import
kotlin
// WRONG
import androidx.test.InstrumentationRegistry             // @Deprecated, every member @InlineMe'd
val ctx = InstrumentationRegistry.getTargetContext()     // returns target package context, NOT the application
// WRONG because: monitor-1.8.0/androidx/test/InstrumentationRegistry.java:34 is @Deprecated.
// Use androidx.test.platform.app.InstrumentationRegistry + ApplicationProvider.
kotlin
// RIGHT
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.core.app.ApplicationProvider
val instrumentation = InstrumentationRegistry.getInstrumentation()
val ctx: Context = ApplicationProvider.getApplicationContext()
Pattern: WRONG vs RIGHT — Test Orchestrator configuration (THE common misconfig)
kotlin
// WRONG
dependencies {
    androidTestImplementation("androidx.test:orchestrator:1.6.1")
}
android.testOptions.execution = "ANDROIDX_TEST_ORCHESTRATOR"
// WRONG because: orchestrator must be installed as a separate APK on the device.
// `androidTestImplementation` puts it on the test APK classpath instead, where it does
// nothing. Tests still run in one shared process. No error, just silent inactivation.
kotlin
// RIGHT
dependencies {
    androidTestUtil("androidx.test:orchestrator:1.6.1")
    androidTestUtil("androidx.test:services:1.6.0")  // required for clearPackageData
}
android.testOptions.execution = "ANDROIDX_TEST_ORCHESTRATOR"
Pattern: filtering tests at run time via RunnerArgs
bash
# Run a single method
adb shell am instrument -w -r \
  -e class com.example.LoginActivityTest#loginSucceeds \
  com.example.app.test/androidx.test.runner.AndroidJUnitRunner

# Filter by size annotation
adb shell am instrument -w -r -e size small  com.example.app.test/androidx.test.runner.AndroidJUnitRunner

# Shard across N runners (CI fan-out)
adb shell am instrument -w -r -e numShards 4 -e shardIndex 0 \
  com.example.app.test/androidx.test.runner.AndroidJUnitRunner

The full list of supported -e keys lives in runner-1.7.0/androidx/test/internal/runner/RunnerArgs.java:54-99 (class, package, notClass, size, annotation, notAnnotation, numShards, shardIndex, clearPackageData, coverage, debug, listener, etc.). To consume them inside the test, read InstrumentationRegistry.getArguments().

Mandatory rules

  • MUST use androidx.test.ext.junit.runners.AndroidJUnit4 for @RunWith(...). The androidx.test.runner.AndroidJUnit4 form is @Deprecated.
  • MUST use androidx.test.platform.app.InstrumentationRegistry. The bare androidx.test.InstrumentationRegistry is @Deprecated.
  • MUST put androidx.test:orchestrator on androidTestUtil, never on androidTestImplementation. Putting it on the wrong configuration fails silently.
  • MUST set testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" (the runner class — that one is not deprecated, only the test-runner annotation is).
  • MUST pass -w to am instrument so the exit code reflects test result. Without it, $? is meaningless.
  • MUST NOT call Thread.sleep to wait for instrumentation lifecycle (onCreate, onStart). Use ActivityScenario.moveToState (see ../../scenarios/launching-activities-with-activityscenario/SKILL.md) or an IdlingResource.
  • MUST NOT grant permissions via raw adb shell pm grant from inside the test — use GrantPermissionRule.grant(...) so the grant scopes to the test class and reverts cleanly.
  • MUST NOT use @Rule public ActivityTestRule — it is @Deprecated. Use @get:Rule val rule = ActivityScenarioRule(...).
  • PREFERRED: annotate every instrumentation test class with @SmallTest / @MediumTest / @LargeTest so CI shards can filter by size.
  • PREFERRED: keep testOptions.animationsDisabled = true even when individual tests don't seem to need it; ripple/transition flake silently corrupts unrelated tests.

Verification

  • ./gradlew :<module>:connectedDebugAndroidTest runs without Test runner not found or INSTRUMENTATION_FAILED.
  • No source file imports androidx.test.runner.AndroidJUnit4 or androidx.test.InstrumentationRegistry (legacy paths).
  • grep -r "androidTestImplementation.*orchestrator" build.gradle* returns nothing — orchestrator is on androidTestUtil.
  • adb shell am instrument -w -r -e size small <pkg>.test/androidx.test.runner.AndroidJUnitRunner returns a non-zero exit code on test failure.
  • If orchestrator is enabled, adb logcat | grep AndroidTestOrchestrator shows per-test process spawning.
  • testOptions.animationsDisabled = true is set in the module's android block.
  • Any runtime permission required by tests has a @get:Rule val rule = GrantPermissionRule.grant(...) (not a manual adb shell pm grant).

References

  • Android Developers — AndroidJUnitRunner overview: https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner
  • Android Developers — Test Orchestrator: https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#use-android
  • AndroidX Test release notes: https://developer.android.com/jetpack/androidx/releases/test
  • runner-1.7.0/androidx/test/runner/AndroidJUnit4.java lines 41-44 — @Deprecated public final class AndroidJUnit4 extends Runner.
  • junit-1.3.0/androidx/test/ext/junit/runners/AndroidJUnit4.java line 49 — current non-deprecated runner; delegates to Robolectric on JVM and AndroidJUnit4ClassRunner on device.
  • runner-1.7.0/androidx/test/runner/AndroidJUnitRunner.java lines 270-372 — the runner class am instrument invokes; lifecycle and orchestrator wait logic.
  • runner-1.7.0/androidx/test/internal/runner/RunnerArgs.java lines 54-99 — canonical list of every -e key the runner accepts.
  • monitor-1.8.0/androidx/test/InstrumentationRegistry.java line 34 — @Deprecated legacy registry; every member @InlineMe'd to the platform.app form.
  • monitor-1.8.0/androidx/test/platform/app/InstrumentationRegistry.java — current canonical registry.
  • rules-1.7.0/androidx/test/rule/GrantPermissionRule.java lines 1-100 — static GrantPermissionRule grant(String...).
  • runner-1.7.0/androidx/test/filters/SdkSuppress.java lines 39-58 — minSdkVersion/maxSdkVersion/excludedSdks/codeName.
  • tasks/research/R1-androidx-test-core.md — full runner / test-core deep dive (lines 269-740 for runner; 481-490 for the dual-AndroidJUnit4 confusion).
  • docs/CORPUS.md Section H — instrumentation library coordinates and deprecation table.
  • Sibling skill: ../../managed-devices/running-tests-on-gradle-managed-devices/SKILL.md — running these tests on emulators Gradle provisions/boots/tears down (reproducible in CI).
  • Cross-set: ../../../adb/tests/running-instrumented-tests-via-adb/SKILL.md — invoking the runner directly via adb shell am instrument -w -r.
  • Cross-set: ../../../platform/legacy/migrating-from-android-test-classes/SKILL.md — if the module still uses the legacy android.test.* classes / InstrumentationTestRunner, migrate it onto this runner stack first.

© 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 instrumentation/runner/running-instrumented-tests-with-androidjunit4 of skydoves/android-testing-skills.

Open the folder on GitHubat commit 8665ed5

Compare with similar skills

Running Instrumented Tests With Androidjunit4 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.

Running Instrumented Tests With Androidjunit4 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Running Instrumented Tests With Androidjunit4 this skillskydoves/android-testing-skills333—~4.5kAutomated safety check: PassApache-2.0
Android CheckAdyen/adyen-android149—~357Automated safety check: PassMIT
Android Unit Testnwjs/chromium.src160—~1.8kAutomated safety check: PassBSD-3-Clause
Incremental Java ProgrammerArabelaTso/Skills-4-SE253—~2.8kAutomated safety check: PassApache-2.0
Jvm Helpershepherdjerred/monorepo112—~1.9kAutomated safety check: PassGPL-3.0
Native Testing Strategybladeofgod/flutter-ai-harness116—~345Automated safety check: PassMIT

Similar skills

  • Android Check

    Adyen/adyen-android

    Run compile, lint, and unit test checks. An agent skill from Adyen/adyen-android.

    149 GitHub stars~357 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Android Unit Test

    nwjs/chromium.src

    Guide for writing and converting Chromium Android unit tests across host Robolectric (chromejunittests) and on-device (chromepublicunittestapk) suites.

    160 GitHub stars~1.8k tokensUpdated 6 days ago
    Testing & QAAuto-check passed
  • Incremental Java Programmer

    ArabelaTso/Skills-4-SE

    Incrementally implement new features in Java repositories from natural language descriptions.

    253 GitHub stars~2.8k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Jvm Helper

    shepherdjerred/monorepo

    Current Java, Kotlin, Gradle, Maven, JUnit, JVM diagnostics, packaging, and performance guidance.

    112 GitHub stars~1.9k tokensUpdated today
    MobileAuto-check passed
  • Native Testing Strategy

    bladeofgod/flutter-ai-harness

    适用:设计或审查 Kotlin/Swift 原生模块、Bridge Adapter、Host 编译、模拟器/设备和系统能力验证。不适用:纯 Dart/Flutter 测试或用 Fake 代替相机和权限真机验证。触发词:JUnit、XCTest、Robolectric、instrumented test、Swift Testing、Framework Fake、Gradle…

    116 GitHub stars~345 tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Mesh Lab

    permissionlesstech/bitchat-android

    Run, diagnose, and extend bitchat Android Mesh Lab physical-device tests.

    7.8k GitHub stars~2.9k tokensUpdated 3 days ago
    Testing & QAAuto-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

Questions about Running Instrumented Tests With Androidjunit4

What does Running Instrumented Tests With Androidjunit4 do?

A skill your agent uses to stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner, the correct AndroidJUnitRunner Gradle wiring, and supporting infrastructure…. Running Instrumented Tests With Androidjunit4 is an agent skill from skydoves/android-testing-skills. Use this skill to stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner, the correct AndroidJUnitRunner Gradle wiring, and supporting infrastructure (Test Orchestrator, runtime permission grants, size annotations, SDK suppression, hermetic animation defaults).

When should I use Running Instrumented Tests With Androidjunit4?

Running Instrumented Tests With Androidjunit4 fits situations like: stand up an Android instrumentation test source set with the canonical AndroidJUnit4 runner; the correct AndroidJUnitRunner Gradle wiring; supporting infrastructure (Test Orchestrator; runtime permission grants.

How do I install Running Instrumented Tests With Androidjunit4 in Claude Code?

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

How do I install Running Instrumented Tests With Androidjunit4 in Codex?

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

Can I use Running Instrumented Tests With Androidjunit4 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 running-instrumented-tests-with-androidjunit4 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/running-instrumented-tests-with-androidjunit4, .gemini/skills/running-instrumented-tests-with-androidjunit4, .github/skills/running-instrumented-tests-with-androidjunit4 and .opencode/skills/running-instrumented-tests-with-androidjunit4 in your project.

What does Running Instrumented Tests With Androidjunit4 need to run?

Going by SKILL.md and its folder, Running Instrumented Tests With Androidjunit4 needs the command-line tools its instructions call (adb).

Does Running Instrumented Tests With Androidjunit4 access the network?

SKILL.md names 1 domain. As links in the text: developer.android.com. This is read from the text; nothing was executed.

Is Running Instrumented Tests With Androidjunit4 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 Running Instrumented Tests With Androidjunit4 use?

Running Instrumented Tests With Androidjunit4 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 Running Instrumented Tests With Androidjunit4 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 Running Instrumented Tests With Androidjunit4?

Skills that share tags, products or a category with Running Instrumented Tests With Androidjunit4: Android Check (Adyen/adyen-android, 149 stars), Android Unit Test (nwjs/chromium.src, 160 stars), Incremental Java Programmer (ArabelaTso/Skills-4-SE, 253 stars) and Jvm Helper (shepherdjerred/monorepo, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Running Instrumented Tests With Androidjunit4?

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.