AGP 9.4.0環境で、JUnit4の@RunWith(Parameterized::class)を使ったinstrumented testの特定メソッドをAndroid Studioから実行すると、テストが存在するのに「0 tests」となり、1件も実行されない既知問題があります。本記事では、公式情報に基づいて原因、修正版、更新までの回避方法を説明します。
代表的な結果
0 tests
tests_regex "\[.*\]"
クラス全体ではなく、パラメーター化テストの個別メソッドをエディターの実行アイコンやコンテキストメニューから指定した場合に現れます。ビルドが成功してもテスト件数が0のまま終了します。
原因
Google Issue Tracker #558766788によると、AGP 9.4.0でAndroid StudioからJUnit4 Parameterizedの単一メソッドを実行すると、テスト選択用のtests_regexに含まれる角括弧のバックスラッシュが端末シェルへ渡る途中で失われます。その結果、生成されたフィルターがパラメーター付きテスト名と一致せず、テストランナーが0件として扱います。
対象と修正版: 問題はAGP 9.4.0で確認され、Android Studio Rabbit 2 Canary 1と同時公開のAGP 9.5.0-alpha06で修正項目に掲載されています。2026年9月17日公開です。
発生条件
- Android Gradle Plugin 9.4.0を使用している
- 端末またはエミュレーターで実行するinstrumented testである
- JUnit4のParameterized runnerを使用している
- Android Studioからクラス全体ではなく単一メソッドを実行する
- 実行結果が失敗ではなく「0 tests」になる
推奨する解決手順
- Help > Aboutとプロジェクトのプラグイン定義でAndroid Studio、AGP、Gradle、JDKのバージョンを記録します。
- AGP 9.5.0-alpha06以降の修正を含む組み合わせへ更新します。Canaryを使えない場合は、同修正を含む後続の安定版を待って採用します。
- AGPの公式互換表に合わせてGradle wrapperとJDKを設定します。
- Gradle Syncを実行し、対象メソッドをAndroid Studioから再度実行します。
- 0件ではなく、パラメーターの各ケースが実行されることを確認します。
更新できない場合の代替策
単一メソッド指定を避け、対象のParameterizedテストクラス全体を実行すると、問題のtests_regex経路を避けられる可能性があります。また、テストコード側で一時的に対象ケースを絞る、またはGradleのinstrumented testタスクからクラス単位で実行する方法も切り分けに使えます。
これらは公式に恒久修正とされた方法ではありません。CIで「成功」と表示されても実行件数が0なら品質確認にならないため、件数とXML結果も確認してください。
確認方法
- 同じParameterizedクラスをクラス単位で実行し、総件数を控えます。
- 対象メソッドだけをAndroid Studioから実行します。
- 各パラメーター付きケースが検出・実行されることを確認します。
- Gradleのテスト結果XMLやAndroid StudioのRunウィンドウで、件数が0ではないことを確認します。
注意点
- 通常のJUnit4テスト、非Parameterizedテスト、クラス全体実行で0件になる場合は別原因の可能性があります。
@RunWith、テストアノテーション、runner設定が誤っている場合も0件になるため、AGPバージョンと発生条件を照合してください。- AGPだけを先行更新する前に、Gradle・JDK・Android Studioとの互換性を確認してください。
まとめ
AGP 9.4.0では、JUnit4 Parameterizedの単一instrumented testメソッドをAndroid Studioから実行すると、tests_regexのバックスラッシュが失われて「0 tests」になる回帰があります。公式修正はAGP 9.5.0-alpha06です。更新できない間はクラス全体を実行し、必ず実行件数を確認してください。
