件のコメントテスト内容Webサービス等のAPIを使って、ログイン未ならログイン画面をログイン済みならホーム画面を表示するようなAndroidアプリを考えます。このアプリのユニットテストを行うにあたり、ログイン状態の取得やWebサービスへアクセスするなどの実際の処理は行わないで、仮の実装でログイン未を返す場合とログイン済みを返す場合のテストケースを作成して、画面が遷移するかを確認できるようにしたいと思います。テストはActivityUnitTestCaseで行います。この時、画面遷移の分岐をonCreateでやるか、onStartでやるかで変ってくるので、その2つについてサンプルを作成しました。テストプロジェクトの準備まず、本アプリのAndroidプロジェクトを作成後、Androidのテストプロジェクトを作成します。テストプロジェクトは(アプリ側のパッケージ名).testというようなパッケージができるのですが、このtest部分は消してアプリ側と同じパッケージ名にします。する事でアプリ側に定義されているデフォルトのアクセス修飾子にアクセスできるので、フィールドの変数の差し替えがやりやすくなります。plus)libsには以下のものを配置します。詳細については割愛します。defineというエラーが出るので、mockito-core-1.9.5.jarとcom.springsource.org.objenesis-1.2.0.jarの組み合わせです。kinjouj.github.ioWebサービスのAPI部分API部分はまだ実装していなくてもインタフェースを定義することでテストが行えます。このようなインタフェースを設けます。このメソッドの結果でログイン未/済を判定するものとします。ActivityのonStart()内に分岐の処理を設ける場合Activityのフィールドに先ほどのインタフェースを定義しておきます。onStartでログイン未/済を判定します。インターフェースの中身はまだ実装していない前提なのでnullにしています。当然ながらこのままアプリを起動するとNullPointerExceptionが発生します。テスト側ActivityUnitTestCaseではstartActivity()を実行するとActivityのonCreate()が実行されます。その後に、Activityのフィールドをテスト用に差し替えて、onStart()を動かしてテストを行います。テスト用はMockitoのmockにして戻り値を指定しています。コード内のコメントでだいたいの流れはわかるかと思います。ちなみに、検証しているxmlはこんな感じです。ActivityのonCreate()内に分岐の処理を設ける場合1まずは、ActivityのonCreate()で分岐するコード(MainActivity2)はこんな感じでしょう。テスト側onStartと何が違うかと申しますと、ActivityUnitTestCaseのテストケースでActivityオブジェクトの取得がstartActivity()なのですが、そのタイミングでonCreate()も実行されるので、このままでは事前にmock版の差し替えを行うことができません。シンプルに考えると、startActivity()をオーバーライドしてonCreateしている所を除いて、しかるべきタイミングでonCreateを叩けばいいのですが、これが一筋縄にはいきません。AndroidのソースのActivityUnitTestCase.javaを参考にしながら書くとこんな感じになります。startActivity()を再現するために、priavteなクラスのMockParentなどを追加しています。プライベートフィールドもあるのですが、省いてるので厳密にonCreate()だけ取り除いたというわけではありません。MyApplicationというのは、android.app.Applicationを継承したものです(アプリ側のManifestにも記述してます)。別途ActivityUnitTestCaseを継承したようなクラスを作成した方がコードが見やすくなるかもしれませんね。ActivityのonCreate()内に分岐の処理を設ける場合2もうひとつ考えたのが、MyApplicationにServerAPIsのフィールドを設けて、それをonCreate()で利用するやり方です。テストケースのsetApplicationする前にmock版に差し替えて、startActivity()すれば、差し替えたMyApplicationを参照するのでテストを行う事ができます。一応コードはこのような感じに。コードはシンプルになるのですが、アプリ側のコードをテスト用にカスタマイズするのでアレですね。参考文献Androidのテストについて多くかかれているわけではないですが、テストの考え方でとても参考になりました。人気の記事Eclipseの高速化メモEclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。JavaでprivateなfieldやmethodにアクセスするJUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。次のような対象のクラスがあるとします。...Eclipseで一通り基本的なGitを使ってみる備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。...Androidのlogcatを自動で保存させたいEclipseのlogcatビューは、いらないログはすぐ消してしまうので、さっきのログをもう一度見たいという時に、どこかに残ってないかなと思うことが時々あります。