この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ActivityInstrumentationTestCase2というテストケースクラスを使って UIの機能をテストできるみたいなので試しました。
以下はテスト対象になるサンプルアプリです。 ボタンを押すとTextViewに"Hello World!"と表示するだけのアプリです。
◎レイアウト
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/button1"
android:text="Button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClick"/>
<TextView android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
◎アクティビティ
package sample.button;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class SampleButton extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onClick(View v) {
TextView textView1 = (TextView) findViewById(R.id.textView1);
textView1.setText("Hello World!");
}
}
次はJUnitテストケースを作成になります。 ここでスーパークラスをActivityInstrumentationTestCase2にして下さい。 場所はSampleButtonと同じところに作成しました。 ボタンを押した際にTextViewの文字列が"Hello World!"になるかテストしています。
◎テストクラス
package sample.button;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;
import android.widget.TextView;
public class SampleButtonTest extends
ActivityInstrumentationTestCase2<SampleButton> {
private TextView textView1;
private Button button1;
public SampleButtonTest() {
super("sample.button", SampleButton.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
button1 = (Button) getActivity().findViewById(R.id.button1);
textView1 = (TextView) getActivity().findViewById(R.id.textView1);
}
public void testOnClick() {
getActivity().runOnUiThread( new Runnable() {
@Override
public void run() {
// ボタンを押す
button1.performClick();
}
});
// 待機する
getInstrumentation().waitForIdleSync();
// TextViewに表示された文字列を確認する
assertEquals("Hello World!", textView1.getText());
}
}
最後にAndroidManifest.xmlを修正します。 uses-libraryタグとinstrumentationタグを追加しています。 それ以外はデフォルトです。 ◎AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sample.button"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name="SampleButton"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="sample.button"/>
</manifest>
準備ができたのでAndroid JUnit Testで起動して下さい。 JUnitビューを開いて以下のように緑のラインが表示されたら成功です。