はじめに.
RobotiumはAndroidのブラックボックステストを自動化するUIテストフレームワーク.
シナリオを手軽にかけて導入も非常に簡単である. 老舗のテストフレームワークでもあり動作は安定している.
本稿はRobotiumを導入したレポートである.
確認環境は次の通り.
- Robotium: 5.2.1
- Android Studio 1.0
- Mac 10.9.5
環境準備
環境準備は次のコードをgradleに追加するのみで完了.
dependencies {
...
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.2.1'
}
簡単. あとはテストコードを書いていく.
サンプルコード
RobotiumではメインとなるSoloクラスをsetUpで初期化する.
下記のコードはテスト開始時にMainActivityを起動し, テスト終了時にfinishさせる簡易なものである.
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
private Solo solo = null;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
super.setUp();
}
@Override
protected void tearDown() throws Exception {
solo.finishOpenedActivities();
super.tearDown();
}
public void testMainActivity() {
// ここにシナリオを記述する
}
}
TestCaseのそれと同じく, testメソッドにシナリオを書いていく.
下記は次の手順をシナリオ化したもの.
- MainActivityが起動できているかを検査
- id.buttonをクリック
- ダイアログオープンをウェイト
- ダイアログに表示されているテキストを検査
- “Yes”を押下
- 表示されるToastに表示されている
public void testMainActivity() {
solo.assertCurrentActivity("wrong activity", MainActivity.class);
solo.waitForActivity(MainActivity.class);
solo.clickOnView(solo.getCurrentActivity().findViewById(R.id.button));
solo.waitForDialogToOpen();
Assert.assertTrue("wrong dialog text", solo.searchText("Test"));
solo.clickOnButton("Yes");
Assert.assertTrue("wrong toast text", solo.searchText("Hello!"));
}
RobotiumはInstrumentationTestCaseがベースであるため, Android Testing Frameworkのそれと同じように扱える.
普段通りAndroidTestとして実行すればRobotiumのテストが実行できる.
以上.