今日はまったこと。

ActivityInstrumentationTestCase2を使って、Activityのテストを作ろうとしてました。

で、ActivityInstrumentationTestCase2をextendすると、Eclipseにコンストラクタを作れよなーと言われるので、提案されたコンストラクタを作るわけですよ。クリック一発お手軽ぽん。こんな感じのが勝手に入ります。

public SpinnerActivityTest(String pkg, Class<SpinnerActivity>activityClass) {
    super(pkg, activityClass);
    // TODO Auto-generated constructor stub
}

で、superを書き換えるわけですよ。

public SpinnerActivityTest(String pkg, Class<SpinnerActivity>activityClass) {
    super("com.android.example.spinner", SpinnerActivity.class);
}

これでテストを走らせると、通常テストクラスの名前が出てくるはずの場所に「junit.framework.TestSuite.1」としか出てこない。中身は Warning だけ。しかも何のwarningだかクリックしても分からない。うーん。と悩むこと30分。

ま、結局、コンストラクタの引数が違っていただけなんですけどね。

正解は、

public SpinnerActivityTest() {
    super("com.android.example.spinner", SpinnerActivity.class);
}

でした。

quick fixと書かれているぐらいなので、eclipseが提案するコードをそのまま鵜呑みにするのはよろしくないですよ、という当たり前すぎて落ちがないお話でした。