他の総合開発環境からのテストこのドキュメントでははコマンドラインから直接テストを作成・実行する方法を説明する。Eclipse以外のIDEで開発もしくはコマンドラインでの作業を好むならここで説明するテクニックを利用できる。このドキュメントは利用するプログラミング環境でのAndroidアプリケーション作成方法を知っていると仮定している。このドキュメントを読む前にAndroidテストの概要を説明しているTesting Fundamentals(テストの基本)を読んでおくべきである。 ADTを導入したEclipseで開発を行なっている場合はEclipse上で直接テストをセットアップし実行することが可能である。さらなる情報はTesting from Eclipse with ADT(ADTを導入したEclipseでのテスト)を参照のこと。 テストプロジェクトのための作業テストプロジェクトの作成にはandroidツールを使う。androidツールでは作成済みのテストコードをAndroidテストプロジェクトに変換することも既存のAndroidテストプロジェクトの"run-tests"Antターケットに追加することも可能である。これらの操作についての詳細はUpdating a test project(テストプロジェクトの更新)で説明している。run-testsターゲットについてはQuick build and run with Ant(Antによる速やかなビルドと実行)で説明する。 テストプロジェクトの生成androidツールでのテストプロジェクトの作成を行なうには以下のように入力する: android create test-project -m <main_path> -n <project_name> -p <test_path> 以下のフラグはすべて必須である。以下のテーブルに詳細を示す:
操作が成功した場合には生成したファイルやディレクトリ名がSTDOUTに表示される。 これで適切なディレクトリとビルドファイルを有する新しいテストプロジェクトが生成される。ディレクトリ構造やビルドファイルは一般のAndroidアプリケーションプロジェクトとまったく同じである。詳細はManaging Projects(プロジェクト管理)【en】で説明している。 この操作によって実装情報であるAndroidManifest.xmlファイルも生成される。テストの実行時、テストするアプリケーションの読み込みや実装の制御にこの情報を利用する。 例えばHello, World【en】チュートリアルアプリケーションを~/source/HelloAndroidに作成すると仮定する。チュートリアルではこのアプリケーションのパッケージ名としてcom.example.helloandroidとアクティビティ名HelloAndroidを使っている。このアプリケーションに対するテストを~/source/HelloAndroidTestに作成するには以下のように入力しなさい: $ cd ~/source この操作によって~/source/HelloAndroidTestディレクトリが生成する。この新しいディレクトリ内にはAndroidManifest.xmlファイルがある。このファイルには以下のような実装関係の要素や属性が記述されている。
テストプロジェクトの更新androidツールはテスト対象のアプリケーションプロジェクトへのパス変更時にも利用可能である。ADTを導入したEclipseによって作成した既存のテストプロジェクトをコマンドラインからビルドや実行可能なように変更するには"create"操作が必要である。Creating a test project(テストプロジェクトの生成)を参照のこと。
androidツールでのテストプロジェクトの更新は以下のように入力する: android update-test-project -m <main_path> -p <test_path>
操作が成功した場合には生成したファイルやディレクトリ名がSTDOUTに表示される。 テストパッケージの生成一度テストプロジェクトを生成するとそれおテストパッケージとして利用する。アプリケーションはActivity【en】を必ずしも必要としませんがそれを望むならば定義することが可能である。テストパッケージには複数のActivity、Androidテストクラスの継承クラス、JUnit継承クラスや一般的なクラスを結び付けることが出来るが最も良い特徴を提供するためにAndroidのテストケースもしくはJUnitクラスを継承すべきである。 InstrumentationTestRunner【en】(もしくは関連するテストランナー)でテストを実行するならばすべてのクラスのメソッドが実行される。これはTestSuite【en】クラスを利用することで変更することが可能である。 テストパッケージを生成するには、Javaパッケージのandroid.test【en】クラスの1つからスタートする。これらはJUnitのTestCase【en】クラスを継承している。若干例外はあるがAndroidテストクラスはテストの実装を提供する。 TestCase【en】を継承したテストクラスのsetUp()とtearDown()メソッドをオーバライドすることになる:
他の有用な決まり事はテストクラスにtestPreConditions()メソッドを追加することである。このメソッドはテスト対象のアプリケーションが正しく初期化されているかどうかのテストに利用する。このテストが失敗した時は初期化条件にエラーがあることがわかる。この失敗が起こった時はテストが成功したかどうかにかかわらず続くテスト結果は疑わしいものとなる。 テストパッケージの生成に関する更なる情報はAndroidテストの概要を説明したTesting Fundamentals(テストの基礎)を参照のこと。チュートリアルを好むならば実際のアプリケーションのためのテスト作成を通じて説明されるActivity Testing(Activityのテスト)に挑戦してください。 テストの実行テストはコマンドライン、AntまたはAndroid Debug Bridge(adb)【en】シェルから実行される。 Antによる速やかなビルドと実行androidツールでテストプロジェクトを生成したとき自動生成されたAntのrun-testsターゲットを使って使ってテストプロジェクトのすべてのテストを実行することが出来る。 un-testsターゲットは必要であればメインプロジェクトとテストをビルドしAVDもしくはデバイスにテストアプリケーションをインストールしテストアプリケーションのすべてのテストを実行する。この結果はSTDOUTに表示される。 この特徴を利用して既存のテストプロジェクトの更新が可能である。これを行うにはandroidツールのupdate test-projectオプションを利用する。これはUpdating a test project(テストプロジェクトの更新)で説明している。 デバイスやエミュレータ上でのテスト実行Android Debug Bridge(adb)【en】によるコマンドラインからのテスト実行時、テストを選択するために他のメソッドよりも多くのオプションがある。個々のテストを選択するか、アノテーションによってテストをフィルタするかまたはテストオプションを指定するか選択することが出来る。テストの実行はコマンドラインから完全に制御されることから、シェルスクリプトにより様々な方法でテストをカスタマイズ可能である。 コマンドラインからテストを実行するにはデバイスかエミュレータ上でコマンドラインシェルをスタートさせるためにadbシェルを実行し、am instrumentコマンドを実行する。コマンドラインのフラグによりamやテストを制御する。 要約するとadbシェルをスタートさせam instrumentを呼び出し、コマンドラインフラグをひとつの入力行にすべて明示する。シェルはデバイスもしくはエミュレータ上で開かれテストが実行されて出力が生成されてコンピュータ上のコマンドラインに返される。 am instrumentでテストを実行するために:
$ adb shell am instrument -w <test_package_name>/<runner_class> test_package_name>にはテストアプリケーションのAndroidパッケージ名を<runner_class>には使用するAndroidテストランナークラス名を指定する。Androidパッケージ名はテストパッケージのマニフェストファイル(AndroidManifest.xml)におけるmanifest要素のpackage属性の値である。Androidテストランナークラスは通常InstrumentationTestRunner【en】である。 テスト結果はSTDOUTに表示される。 この操作はadbシェルをスタートさせ明示したパラメータでam instrumentが実行される。このコマンドの特定な形式はテストパッケージのすべてのテストを実行する。am instrumentに渡すフラグでこの振舞いは制御可能である。これらのフラグは次のセクションで説明する。 am instrumentコマンドの利用am instrumentコマンドの一般的なシンタックス: am instrument [flags] <test_package>/<runner_class> am instrumentへの主たる入力について次のテーブルで説明する:
am instrumentのフラグは以下のテーブルで説明している:
am instrumentオプションam instrumentツールは以下のようなシンタックスで-eフラグを利用しキーと値のペアをInstrumentationTestRunnerもしうはサブクラスにテストオプションを渡す:
いくつかのキーは複数の値を許容する。複数の値はカンマ区切りされたリストで指定する。例えばInstrumentationTestRunnerの起動にはパッケージキーの複数値が与えられる: $ adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \ 以下のテーブルはキーと値のペアやその結果を説明している。テーブルに続いて利用ノートを参照のこと。
"-e フラグ使用説明"
使用例以下のセクションではテスト実行のためのam instrument使用例を準備する:
テストパッケージ全体の実行テストパッケージのすべてのテストクラスの実行は次のように入力する: $ adb shell am instrument -w com.android.demo.app.tests/android.test.InstrumentationTestRunner テストケースクラス内のすべてのテストの実行To run all of the tests in the class UnitTests, enter: UnitTestsクラスのすべてのテストを実行するには次のように入力する: $ adb shell am instrument -w \ am instrumentは-eフラグの値を取得しクラスキーワードを検出してUnitTestsクラスのすべてのメソッドを実行する。 テストのサブセットを選択UnitTestsすべてのテスト及びFunctionTestsのtestCameraメソッドを実行するには次のように入力する: $ adb shell am instrument -w \ InstrumentationTestRunner【en】のドキュメントではさらなるコマンド例を見ることが出来る。
|


