Robolectric は、Android 用の業界標準の単体テスト フレームワークです。 Robolectric を使用すると、エミュレータのオーバーヘッドや不安定さなしに、JVM 内のシミュレートされた Android 環境でテストが実行されます。 Robolectric テストは通常、コールド スタートのエミュレータよりも 10 倍高速に実行されます。
Robolectric は、Lollipop (API レベル 21) から V (API レベル 35) まで、Android の15の異なるバージョンの単体テストの実行をサポートします。
Robolectric を使用して作成された簡単なテストの例を次に示します。
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
Robolectric をプロジェクトにインストールして使用する方法、その機能を拡張する方法、貢献者のコミュニティに参加する方法の詳細については、robolectric.org をご覧ください。
Robolectric テストを使用して新しいプロジェクトを開始したい場合は、マシン上で Android と Robolectric の両方をセットアップするためのガイドとして、 deckard
(Maven または Gradle のいずれかについて) を参照できます。
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric は Gradle を使用して構築されています。 Android Studio と IntelliJ は両方とも、トップレベルのbuild.gradle.kts
ファイルをインポートでき、そこからプロジェクト ファイルを自動的に生成します。
Robolectric をマシン上で起動して実行するには、このガイドを参照してください。
Robolectric のアーキテクチャの概要を理解するには、robolectric.org をチェックしてください。
Robolectric はいくつかの場所で積極的に開発されています。主な場所はこの GitHub リポジトリであり、Robolectric コードの信頼できる情報源と考えられています。ここでは、広範な Android 開発者コミュニティからの貢献が行われます。 Google 社内には Robolectric のアクティブな開発ツリーもあり、ファーストパーティの Android 開発者からの貢献が行われています。 Google 社内に Robolectric の開発ツリーがあることで、ファーストパーティの Android 開発者がより効率的に Robolectric に貢献できるようになります。このツリーは、 Copybara
コード同期ツールを使用して、変更が発生するたびにgoogle
ブランチに直接同期されます。このブランチとmaster
ブランチの双方向マージは定期的に発生します。
Robolectric は、外部/robolectric リポジトリ プロジェクトを介して Android プラットフォームでも使用できます。このソース ツリーへの貢献は通常、新しい SDK サポートと進化するプラットフォーム API に関連しています。このブランチからの変更は Google の内部 Robolectric ツリーにアップストリームされ、最終的には GitHub ブランチに伝播されます。
複雑ではありますが、この分散開発モデルにより、さまざまな環境の Android 開発者が Robolectric を使用して貢献できると同時に、変更を最終的に Robolectric の公開リリースに反映させることができます。
最新の状態を維持したい場合は、スナップショット ビルドを実行してみてください。スナップショットはmaster
上の最新の変更を表しており、バグが含まれている可能性があることに注意してください。
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}