セットアップメソッドをEclipseのコード補完機能で定義
setUp()メソッドは各テストメソッド開始前に実行されるメソッドです。テストメソッドを実行する前に、必ず実行したい変数の初期化や環境設定などを行います。
今回は、テスト対象となるHelloAndroidActivityのインスタンスおよびHelloAndroidActivityに表示するTextViewを取得し、リソースファイル(strings.xml)に定義している文字列を取得します。
まず、setUp()メソッドを記述する位置に「setup」を入力します。[Ctrl]+[Space]キーで候補を表示します。
「setup(): void - Override method in ‘ActivityInstrumentationTestCase2’」を選択すると、「ActivityInstrumentationTestCase2」のsetUp()メソッドを自動でオーバーライドします。
package com.example.helloandroid.test; import com.example.helloandroid.HelloAndroidActivity; import android.test.ActivityInstrumentationTestCase2; public class HelloAndroidActivityTest extends ActivityInstrumentationTestCase2<HelloAndroidActivity> { public HelloAndroidActivityTest() { super("com.example.helloandroid", HelloAndroidActivity.class); } @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); } }
setUp()メソッド内に、以下のコードを記述します。
super.setUp(); activity = getActivity(); view = (TextView) activity .findViewById(com.example.helloandroid.R.id.textView); resourceString = activity .getString(com.example.helloandroid.R.string.hello);
ここで注意点が2点あります。
まず、「R」クラスはテストプロジェクトの「R」クラスではなく、テスト対象プロジェクト「HelloAndroid」の「R」クラスを使用します。インポート時に選択を間違えないようにしましょう。
また新しいバージョンのADTでは、自動生成される「main.xml」に「android:id」属性を自動で設定しなくなりました。HelloAndroidプロジェクトの「res/layout/main.xml」を確認し、TextViewに「android:id」属性を設定ていない場合は手動で設定しましょう。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
テストメソッドを追加
テストメソッドを記述する位置に「test」を入力します。[Ctrl]+[Space]キーで候補を表示します。
「test - test method」を選択すると、テストメソッドのスタブを自動生成するので、以下の通りに修正・追記します。
public void testText() throws Exception { assertNotNull(resourceString, view.getText().toString()); }
このテストメソッドでは、TextViewに、strings.xmlで「hello」として設定している文字列を表示することを確認しています。
テストケースの作成は以上で完成です。
Androidアプリの単体テストを実行してみよう
作成したテストケースを実行するには、[Package Explorer]で「HelloAndroidTest」を右クリックし、コンテキストメニューから、[Run As]→[Android JUnit Test]を選択します。
テストプロジェクトが実行可能なバージョンのAndroid端末が接続中の場合は端末上で、エミュレータが起動している場合はエミュレータ上で、テストを実行します。
端末の接続とエミュレータの起動が同時の場合は、選択ダイアログが表示されます。デフォルトではデプロイ対象が[Automatic]ですが、固定したい場合は[Android JUnit Test]の[起動構成]から、[Target]タブを選択して設定します。この設定は通常のAndroidアプリの起動構成の設定と同じです。
テストを実行すると、実行結果が[JUnit]ビューに表示されます。テストがすべて成功すると、バーが緑になります。ビューに表示されている内容は次の通りです。
- [Finished after xxx seconds]:テストの実行にかかった時間(xxx秒)
- [Runs]:実行したテスト数/テストケース中に定義済みのテスト数
- [Errors]:テスト実行中に発生したエラー、例外の数
- [Failures]:テスト実行中に起きた、Assertion失敗の数
- プログレスバー:テスト実行中にバーが左から右に進む。すべてのテストが成功すればバーは緑になり、失敗すれば赤となる
- テストメソッドのサマリ:プログレスバーの下部には、クラスごとにテストメソッドを表示
次回は、ビジネスロジックのテスト
以上で、Androidアプリのテストを記述する環境が整いました。次回は、ビジネスロジックをテストします。Android SDKで提供しているTestCaseクラスの説明や、Android特有のライフサイクルなどに依存しないビジネスロジックのテストケースの書き方について解説します。
著者紹介
宮田友美
株式会社オープンストリームにおいて、アーキテクトとしてAndroidの調査・研究および案件支援に従事。趣味はAndroid系端末をはじめとしたガジェット収集。しかし最近は、心踊るガジェットが最近あまり発売されないのが悩みの種
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 今日から始める! Androidケータイアプリ作成の基礎
いまこそ知っておきたい「Androidアプリ」とは - 売れるスマホアプリを目指せ! テスト達人への道
安藤幸央のランダウン(56) - 単体テストを“神速”化するQuick JUnitとMockito
ユカイ、ツーカイ、カイハツ環境!(16) - JUnit/FindBugs/PMDなどを総観できるQALab/Limy
ユカイ、ツーカイ、カイハツ環境!(8) - 次世代テストフレームワークでテストを変える
- Eclipseで使えるテストツールカタログ
- イチから始める!Androidセキュリティ
- Androidセキュリティの今、これから