この記事を参考にさせていただきました。

以下がサンプルコード。
やりたかったアクティビティからアクティビティの呼び出しが行われたかの確認のみに特化。

テスト対象コード。アクティビティを呼び出す方

package net.krks.android.junitsample;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class JUnitSampleActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b = (Button) findViewById(R.id.Button01);
        b.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent i = new Intent(getApplicationContext(), NextActivity.class);
				startActivity(i);
			}
		});
    }
}

対象その二。呼び出せるアクティビティ

package net.krks.android.junitsample;

import android.app.Activity;
import android.os.Bundle;

public class NextActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.next);
    }
}

テスト用コード
アクティビティ起動後に、ボタンを押してNextActivityを起動することをテストする。

package net.krks.android.junitsample.test;

import net.krks.android.junitsample.JUnitSampleActivity;
import android.app.Activity;
import android.app.Instrumentation.ActivityMonitor;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;

public class JUnitSampleActivityTest extends
		ActivityInstrumentationTestCase2 {

	public JUnitSampleActivityTest(){ // 必要。これがないとテスト実行できない。
		super("net.krks.android.junitsample", JUnitSampleActivity.class);
	}
	public JUnitSampleActivityTest(String pkg,
			Class activityClass) {
		super("net.krks.android.junitsample", JUnitSampleActivity.class);
	}

	public void testNextActivity(){
		//呼び出せるActivity
		ActivityMonitor monitor = new ActivityMonitor("net.krks.android.junitsample.NextActivity", null, false);
		getInstrumentation().addMonitor(monitor);

		final JUnitSampleActivity activity = getActivity();
		final Button b = (Button) activity.findViewById(net.krks.android.junitsample.R.id.Button01);

		activity.runOnUiThread(new Runnable() {

			@Override
			public void run() {
				b.performClick(); //ボタンを押す動作をエミュレート
			}
		});

		Activity next = getInstrumentation().waitForMonitorWithTimeout(monitor, 2000);
		assertEquals(1, monitor.getHits()); //monitor.getHitsで、対象アクティビティが呼び出された回数を調べる。

		if(next != null)
			next.finish();

	}
}
Pocket

Comments are closed.