ActivityのJUnitTestCaseの作成について

手順

  1. テストパッケージを右クリック→「New」→「JUnit TestCase」

  2. 画面が出てくるので、以下を入力します。

newActivityTestCase

NAME:Activity名+"Test"
Superclass:ActivityInstrumentationTestCase2<検証したいクラス名>
Class under test:テストしたいActivity

  1. 「Next」を選択し、以下画面を表示します。 テストしたいメソッドを選択し、「Finish」を押します。

testMethods

  1. importをimport android.test.ActivityInstrumentationTestCase2;
    import 検証したいプログラムのパッケージ名;に変更します。

  2. まだ、クラス名の所でエラーが発生しているので 引数なしのコンストラクタを追加します。 (例)

1
2
3
public MainActivityTest() {
    super(MainActivity.class);
}

(第一引数:テストを行いたいプロジェクト名、第二引数:テストを行いたいクラス名) ここまでのソースの例は以下のようになります。

(例)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
package my.arrayadapter.ecli.test;

import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
import my.arrayadapter.ecli.ArrayadapterActivity;


public class TEST extends ActivityInstrumentationTestCase2<ArrayadapterActivity> {

    public TEST(){
        super(ArrayadapterActivity.class);
    }
}

getActivity()とfinish()について説明

テストコードが実行される前に、確かにシステムに教えて1つのActivityをスタートします。メソッドgetActivity()を使って1つのActivityをスタートすることができます。最後に、メソッドgetActivity()を使ってこのActivityを中断します。 (例)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public void setUp() throws Exception{
    super.setUp();
    mActivity = getActivity();
}
public void testActivity(){
    mActivity.runOnUiThread(new Runnable(){
        @Override
        public void run(){
            //UIで行う動作
        }
    });
    mActivity.finish();
}

mInstrument.waitForIdleSync

シングルなスレッドでテストケースを実行する時、mInstrument.waitForIdleSync()を使ってアプリケーションをシンクロナイズします。 (例)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
mActivity.runOnUiThread(new Runnable() {

    @Override
    public void run() {
                 //UIで行う動作
    }
});
mInstrument.waitForIdleSync();
mActivity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
                 //UIで行う動作
         }
});

常用メソッド

  • キー入力を行いたい場合はsendKeys()で行い、例えば「1」という数字を入力する場合はsendKeys(KeyEvent.KEYCODE_1);
  • BackSpaceを入力する場合は、sendKeys(KeyEvent.KEYCODE_DEL);
  • ボタンタップのイベントはボタンオブジェクトに対して、performClick()メソッドを利用する。