連載
» 2011年11月17日 00時00分 UPDATE

Androidアプリ開発テスト入門(1):Androidアプリ開発でテストを始めるための基礎知識 (3/3)

[宮田友美,日本Androidの会テスト部]
前のページへ 1|2|3       

セットアップメソッドをEclipseのコード補完機能で定義

 setUp()メソッドは各テストメソッド開始前に実行されるメソッドです。テストメソッドを実行する前に、必ず実行したい変数の初期化や環境設定などを行います。

 今回は、テスト対象となるHelloAndroidActivityのインスタンスおよびHelloAndroidActivityに表示するTextViewを取得し、リソースファイル(strings.xml)に定義している文字列を取得します。

 まず、setUp()メソッドを記述する位置に「setup」を入力します。[Ctrl]+[Space]キーで候補を表示します。

r1311.gif

 「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]キーで候補を表示します。

r1312.gif

 「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]を選択します。

r1313.gif

 テストプロジェクトが実行可能なバージョンのAndroid端末が接続中の場合は端末上で、エミュレータが起動している場合はエミュレータ上で、テストを実行します。

 端末の接続とエミュレータの起動が同時の場合は、選択ダイアログが表示されます。デフォルトではデプロイ対象が[Automatic]ですが、固定したい場合は[Android JUnit Test]の[起動構成]から、[Target]タブを選択して設定します。この設定は通常のAndroidアプリの起動構成の設定と同じです。

r1314.gif

 テストを実行すると、実行結果が[JUnit]ビューに表示されます。テストがすべて成功すると、バーが緑になります。ビューに表示されている内容は次の通りです。

r1315.gif
  • [Finished after xxx seconds]:テストの実行にかかった時間(xxx秒)
  • [Runs]:実行したテスト数/テストケース中に定義済みのテスト数
  • [Errors]:テスト実行中に発生したエラー、例外の数
  • [Failures]:テスト実行中に起きた、Assertion失敗の数
  • プログレスバー:テスト実行中にバーが左から右に進む。すべてのテストが成功すればバーは緑になり、失敗すれば赤となる
  • テストメソッドのサマリ:プログレスバーの下部には、クラスごとにテストメソッドを表示

次回は、ビジネスロジックのテスト

 以上で、Androidアプリのテストを記述する環境が整いました。次回は、ビジネスロジックをテストします。Android SDKで提供しているTestCaseクラスの説明や、Android特有のライフサイクルなどに依存しないビジネスロジックのテストケースの書き方について解説します。

著者紹介

Androidテスト部部長

宮田友美

株式会社オープンストリームにおいて、アーキテクトとしてAndroidの調査・研究および案件支援に従事。趣味はAndroid系端末をはじめとしたガジェット収集。しかし最近は、心踊るガジェットが最近あまり発売されないのが悩みの種



前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。