android-test-runner
重要: ユーザーがAndroidテスト実行をリクエストした場合、常にこのスキルを最初に使用してください。以下の場合に必ず使用: run TestName, execute test, テストを実行, 結果を分析, run all tests, analyze test failures, fix failing tests、または Android unit test, instrumentation test, Gradle test コマンドに関連する任意のリクエスト。./gradlew test や Bash コマンドを直接使用しないでください - 常にこのスキルに委譲してください。Multi-variantプロジェクト、JAVA_HOME セットアップ、一般的なテストパターンに対応しています。
Best use case
android-test-runner is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
重要: ユーザーがAndroidテスト実行をリクエストした場合、常にこのスキルを最初に使用してください。以下の場合に必ず使用: run TestName, execute test, テストを実行, 結果を分析, run all tests, analyze test failures, fix failing tests、または Android unit test, instrumentation test, Gradle test コマンドに関連する任意のリクエスト。./gradlew test や Bash コマンドを直接使用しないでください - 常にこのスキルに委譲してください。Multi-variantプロジェクト、JAVA_HOME セットアップ、一般的なテストパターンに対応しています。
Teams using android-test-runner should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/android-test-runner/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How android-test-runner Compares
| Feature / Agent | android-test-runner | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
重要: ユーザーがAndroidテスト実行をリクエストした場合、常にこのスキルを最初に使用してください。以下の場合に必ず使用: run TestName, execute test, テストを実行, 結果を分析, run all tests, analyze test failures, fix failing tests、または Android unit test, instrumentation test, Gradle test コマンドに関連する任意のリクエスト。./gradlew test や Bash コマンドを直接使用しないでください - 常にこのスキルに委譲してください。Multi-variantプロジェクト、JAVA_HOME セットアップ、一般的なテストパターンに対応しています。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Android Test Runner
Android テスト実行を自動化し、テスト失敗を分析し、実行可能な修正提案を提供する Claude Code スキルです。
## 目的
このスキルは Android 開発者を支援します:
- Claude Code から直接テストを実行
- テスト失敗の根本原因を自動的に分析
- 失敗したテストに対する具体的な修正提案を取得
- デバッグ時間を30%以上削減
## Quick Reference
### 最も一般的なエラー
| エラーメッセージ | Pattern | クイックフィックス |
|---------------|---------|-----------| | `Unable to locate a Java Runtime` | 6, 12 | `export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"` |
| `Unknown command-line option '--tests'` | 5, 11 | `./gradlew :module:testVariantDebugUnitTest` |
| `No answer found for:` (MockK) | 2 | `every { mock.method() } returns value` |
| `No value passed for parameter` | 7, 13 | 不足しているコンストラクタパラメータを追加 |
| `Test not found` (Compose UI) | 17 | `androidTest/` に移動 |
| `NoSuchElementException` (Flow) | 19 | Turbine の `.test {}` を使用 |
| `expected: X but was: Y` | 8, 14 | Mock データを確認 |
| CI失敗、ローカル成功 | 16, 18 | すべてのバリアントをテスト `./gradlew test` |
詳細は `knowledge/test-failure-patterns.md` を参照
## 使い方
### テスト実行
```
User: すべてのunit testを実行して
Assistant: [./gradlew test を実行し結果を分析]
User: UserRepositoryのテストを実行して
Assistant: [./gradlew test --tests "*UserRepositoryTest" を実行し結果を分析]
```
### 失敗分析
テストが失敗すると、このスキルは自動的に:
1. テスト出力ログを解析
2. 失敗パターンを特定(NullPointerException, Mock設定問題等)
3. コード例付きの具体的な修正提案を提供
### 修正提案の取得
```
User: LoginViewModelTestが失敗した理由は?
Assistant: [テスト失敗ログを分析し以下を提供:
- 根本原因の説明
- 関連するコードスニペット
- コード例付きの具体的な修正]
```
## System Instructions
ユーザーが Android テストの実行やテスト失敗の分析をリクエストした場合、以下の手順に従ってください:
### 0. 環境セットアップ & プロジェクト検出(必須 - 常に最初に実行)
テストを実行する前に、環境を確認・設定してください:
#### ステップ1: JAVA_HOME 確認
```bash
# JAVA_HOMEが設定されているか確認
if [ -z "$JAVA_HOME" ]; then
# macOS: Android Studio JBR を自動検出
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
fi
# 確認
$JAVA_HOME/bin/java -version
```
**エラー検出**:
- "Unable to locate a Java Runtime" が表示された場合 → JAVA_HOMEを設定して再試行
#### ステップ2: プロジェクト構造検出
```bash
# ビルドバリアントを検出(存在する場合)
./gradlew tasks --all | grep "test.*UnitTest"
# 出力例(multi-variantプロジェクト):
# :app:testDevelopDebugUnitTest
# :app:testDevelopReleaseUnitTest
# :app:testProductionDebugUnitTest
```
**ビルドバリアント検出**:
- 複数の `testXxxDebugUnitTest` タスクが存在 → プロジェクトにビルドバリアントあり
- `Unknown command-line option '--tests'` エラー → バリアント固有タスクを使用する必要あり
**BuildType認識**:
本番プロジェクトには複数のBuild Typeが存在することが多い:
- `Debug`: 通常のテスト実行(最も一般的)
- `Release`: リリースビルド
- `CiRelease`: CI専用リリースビルド
- `Minified`: 難読化テストビルド
**総バリアント数** = Product Flavors × Build Types
- 例: 4 flavors × 3 build types = 12 variants
- 日常開発: `Debug` ビルドタイプのみテスト
- コミット前: すべてのflavorsを `Debug` でテスト(`./gradlew :module:testDebug`)
- リリース前: すべてのバリアントをテスト(`./gradlew :module:test`)
#### ステップ3: テストタスク決定
**ビルドバリアントありのプロジェクト**:
```bash
# 単一バリアント(最速、クイックチェック用)
./gradlew :module:testVariantDebugUnitTest
# すべてのバリアント(CI相当、コミット前推奨)
./gradlew :module:test
```
**ビルドバリアントなしのプロジェクト**:
```bash
# 標準コマンドが動作
./gradlew test
./gradlew test --tests "*TestClass"
```
### 1. テスト実行(拡張版)
Bashツールを使用してGradleテストコマンドを実行してください。**重要**: 常に最初にJAVA_HOMEを設定してください(ステップ0から)。
#### パターンA: 標準プロジェクト(ビルドバリアントなし)
```bash
# すべてのunit test
./gradlew test
# 特定のテストクラス
./gradlew test --tests "*UserRepositoryTest"
# 特定のテストメソッド
./gradlew test --tests "*UserRepositoryTest.testGetUser"
# 詳細出力付き
./gradlew test --info
```
#### パターンB: Multi-Variantプロジェクト(本番環境で一般的)
```bash
# JAVA_HOME設定 + 単一バリアントテスト
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" && \
./gradlew :module:testVariantDebugUnitTest
# すべてのバリアント(CI相当、コミット前推奨)
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" && \
./gradlew :module:test
# 特定モジュールの特定バリアント
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" && \
./gradlew :data:testProductionDebugUnitTest
```
#### エラーハンドリング & 自動再試行
**エラー1: `Unknown command-line option '--tests'`**
- **原因**: プロジェクトに複数のビルドバリアントあり
- **修正**: バリアント固有タスクに切り替え
```bash
# バリアントを検出
./gradlew tasks --all | grep "test.*UnitTest"
# バリアントタスクを使用
./gradlew :module:testVariantDebugUnitTest
```
**エラー2: `Unable to locate a Java Runtime`**
- **原因**: JAVA_HOME未設定
- **修正**: JAVA_HOMEを設定して再試行
```bash
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :module:testVariantDebugUnitTest
```
**重要**:
- 常にプロジェクトルートディレクトリから実行
- 常にAndroidプロジェクトでJAVA_HOMEを設定
- テストコマンドを選択する前にビルドバリアントを検出
- 標準出力と標準エラー出力の両方をキャプチャ
- コミット前にすべてのバリアントのテストを推奨(CIパリティ)
### 2. テスト結果の解析
テスト実行後、出力を分析:
**成功インジケータ**:
- "BUILD SUCCESSFUL"
- "X tests completed, X passed"
**失敗インジケータ**:
- "BUILD FAILED"
- "X tests completed, X failed"
- 出力中のスタックトレース
抽出:
- 失敗したテストクラス名
- 失敗したテストメソッド名
- 例外タイプとメッセージ
- スタックトレースの場所
### 3. 失敗パターン分析
失敗を一般的なパターンと照合(完全なリストは `knowledge/test-failure-patterns.md` を参照):
**一般的なパターン**:
- Pattern 1: NullPointerException
- Pattern 2: MockK: No Answer Found
- Pattern 3-10: 標準的なテスト失敗
- Pattern 11-16: Multi-variantプロジェクト固有の問題
- Pattern 17-19: 高度なパターン(Compose UI, BuildType, Flow)
### 4. 修正提案の提供
レスポンスを以下の形式でフォーマット:
```markdown
## テスト失敗分析
**失敗したテスト**: `UserRepositoryTest.testGetUser()`
**根本原因**: MockK mock が `userApi.getUser()` に対して設定されていない
**修正方法**:
`UserRepositoryTest.kt:45` で、mock設定を追加:
```kotlin
@Before
fun setup() {
every { userApi.getUser() } returns Result.success(mockUser)
}
```
**説明**:
テストが `userApi.getUser()` を呼び出していますが、MockKは何を返すべきか分かりません。
`every { ... } returns ...` を使用してmockの動作を定義する必要があります。
```
### 5. ナレッジ参照
一般的なパターンについては、以下のナレッジファイルを参照:
- `knowledge/test-failure-patterns.md` - 一般的なAndroidテスト失敗パターン(19パターン)
- `knowledge/project-template.md` - プロジェクト固有のカスタマイズ用テンプレート
- `templates/fix-suggestions.md` - 修正提案用テンプレート
## 重要事項
- 常にプロジェクトルートから実行
- ログを注意深く解析して正確な失敗場所を特定
- ファイルパスと行番号を提供(例: `UserRepository.kt:25`)
- 修正提案時に実際のテストファイルからコードスニペットを含める
- テスト修正は最小限で焦点を絞ったものに
- プロジェクト固有のパターンについては、プロジェクト固有のナレッジファイルを参照
## カスタマイズ
### プロジェクト固有版の作成
最大の精度(80% → 98%)を得るために、プロジェクト固有版を作成:
1. このスキルをプロジェクトにコピー:
```bash
cp -r android-test-runner your-project/.claude/skills/
```
2. `knowledge/project-specific.md` を以下の内容で作成:
- ビルドバリアントとビルドタイプ
- プロジェクト標準のテストライブラリ
- アーキテクチャパターン(Result型、Flow型等)
- CI/CD設定
- プロジェクト固有の一般的な失敗パターン
開発ワークフローについては `~/.config/claude-code/AI_DEVELOPMENT_GUIDELINES.md` を参照。
## 成功基準
- ✅ Gradle経由でテストを実行可能
- ✅ 失敗の根本原因を正確に特定(70%以上の精度)
- ✅ 実行可能な修正提案を提供
- ✅ デバッグ時間を30%以上削減
## バージョン
### v1.0 - 汎用版リリース (2025-11-20)
- ✅ Pattern 1-19 を実装
- ✅ Multi-variantプロジェクトサポート
- ✅ JAVA_HOME 自動設定
- ✅ Quick Reference 追加
- ✅ 包括的なドキュメント
- ✅ すべての説明を日本語で記述(視認性・メンテナンス性向上)
android-test-runner v0.2(プロジェクト固有版、98%精度)をベースにしていますRelated Skills
Burp Suite Web Application Testing
This skill should be used when the user asks to "intercept HTTP traffic", "modify web requests", "use Burp Suite for testing", "perform web vulnerability scanning", "test with Burp Repeater", "analyze HTTP history", or "configure proxy for web testing". It provides comprehensive guidance for using Burp Suite's core features for web application security testing.
burp-suite-testing
This skill should be used when the user asks to "intercept HTTP traffic", "modify web requests", "use Burp Suite for testing", "perform web vulnerability scanning", "test with Burp ...
backtesting-frameworks
Build robust backtesting systems for trading strategies with proper handling of look-ahead bias, survivorship bias, and transaction costs. Use when developing trading algorithms, validating strateg...
axiom-ios-testing
Use when writing ANY test, debugging flaky tests, making tests faster, or asking about Swift Testing vs XCTest. Covers unit tests, UI tests, fast tests without simulator, async testing, test architecture.
asyncredux-testing-view-models
Test StoreConnector view-models in isolation. Covers creating view-models with `Vm.createFrom()`, testing view-model properties, testing callbacks that dispatch actions, and verifying state changes from callbacks.
asyncredux-testing-basics
Write unit tests for AsyncRedux actions using the Store directly. Covers creating test stores with initial state, using `dispatchAndWait()`, checking state after actions, verifying action errors via ActionStatus, and testing async actions.
astro-testing
Testing and QA gate for Astro lead gen sites. Manual + E2E + A11y + Performance. FAIL = no deploy.
aspire-integration-testing
Write integration tests using .NET Aspire's testing facilities with xUnit. Covers test fixtures, distributed application setup, endpoint discovery, and patterns for testing ASP.NET Core apps with real dependencies.
ark-dashboard-testing
Test Ark Dashboard with Playwright and create PRs with screenshots. Use when testing dashboard UI, taking screenshots for PRs, or reviewing dashboard changes.
Ark Dashboard Test
Test the Ark Dashboard UI with Playwright
arguments-test
Test skill for argument substitution
app-comprehensive-test-generator
Generate exhaustive user-flow and edge-case test scenarios from an app's codebase, produce scenario .md files, execute tests using connected or newly created MCPs, and produce an app.qa.report.md summarizing failures and suggested fixes.