package com.android_textbook.learnjunit;
import android.app.Activity;
import android.app.Instrumentation.ActivityMonitor;
import android.content.Intent;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;
import com.android_textbook.learnjunit.FirstActivity;
import com.android_textbook.learnjunit.R;
import com.android_textbook.learnjunit.SimpleTextActivity;
public class FirstActivityTest extends ActivityInstrumentationTestCase2<FirstActivity> {
public FirstActivityTest() {
super(FirstActivity.class);
}
public void testStartActivity() throws Throwable {
final FirstActivity activity = getActivity();
// Activityを監視するモニターを作成して登録する
ActivityMonitor monitor = new ActivityMonitor(SimpleTextActivity.class.getName(), null,
false);
getInstrumentation().addMonitor(monitor);
// ここでActivityが遷移する処理を行う
runTestOnUiThread(new Runnable() {
@Override
public void run() {
Button button = (Button)activity.findViewById(R.id.goToNextButton);
button.performClick();
}
});
// 次のアクティビティが検知されるまで待つ
Activity next = getInstrumentation().waitForMonitorWithTimeout(monitor, 2000);
// 対象アクティビティが起動したことと、それが1回であることを確認する
assertNotNull(next);
assertEquals(1, monitor.getHits());
// インテントに渡されている追加情報が意図したものか確認する
Intent nextIntent = next.getIntent();
assertEquals("Something", nextIntent.getStringExtra(SimpleTextActivity.EXTRA_TEXT));
// 起動したアクティビティを終了しておく
next.finish();
}
}