現実トウヒ

scheme 方面微妙なんで (何
# 何故に kernel 方面にニゲないのか、も微妙っちゃ微妙ですが
Android JUnit Test を参考に試験を書いてみます。
手順としては

  • SDK_HOME/platforms/android-1.5/samples/ApiDemos をプロジェクトとして読み込み
  • ApiDemos を Run As -> Android Application で動かす
  • SDK_HOME/platforms/android-1.5/samples/ApiDemos/tests をプロジェクトとして読み込み
  • 参照設定
    • 上記で作成した試験なプロジェクトのプロパティを開いて Java Build Path の Projects に ApiDemos プロジェクトを追加
  • 試験を実行

ヤッてみたら 2 件 fail した。作り方としては試験用のプロジェクトを作るカンジなんですね。ソース開いてみたら

import android.test.ActivityInstrumentationTestCase;

が deprecated 云々とあるな。何故に配布しているサンプルでこーゆーコトが起きるのか。で、eclipse の言う通りにしたら以下が追加されたのでしょうか。

@SuppressWarnings("deprecation")
public class Focus2ActivityTest extends ActivityInstrumentationTestCase<Focus2> {

このあたり、おぢさんには意味不明ざんす。上書きして試験を Rerun してみると、挙動としては変更ナシ、ってコトは上記対処は全然方向違いだった模様。
! 出てるファイルを開いていぢくってるだけなので当たり前っちゃ当たり前ですが ..
むむむ、と言いつつ AllTests.java 開いてみたら以下な記述。

public class AllTests extends TestSuite {

    public static Test suite() {
        return new TestSuiteBuilder(AllTests.class)
                .includeAllPackagesUnderHere()
                .build();
    }
}

TestSuiteBuilder クラスは android 固有らしい。以下な import が記述されている。

import android.test.suitebuilder.TestSuiteBuilder;

しかし当分 java を触っていないうちによく分からん書き方が出てきてますな。雰囲気的に

  • TestSuiteBuilder なオブジェクト new して
  • includeAllPackagesUnderHere() が戻すオブジェクトの
  • build() メソド呼び出し

みたいなイメージ?
ココによれば includeAllPackagesUnderHere() は

Include all junit tests that satisfy the requirements in the calling class' package and all sub-packages.
Returns
The builder for method chaining.

との事。あるいは build() は

Call this method once you've configured your builder as desired.
Returns
The suite containing the requested tests.

ッスか。どうもここについてはキメ打ちな模様。試験なソースは以下なのかな。

.
./app
./app/LocalServiceTest.java
./app/ForwardingTest.java
./ApiDemosTest.java
./os
./os/MorseCodeConverterTest.java
./view
./view/Focus2AndroidTest.java
./view/Focus2ActivityTest.java
./AllTests.java
./ApiDemosApplicationTests.java

ちょっとソースに目を通してみる方向で。