読者です 読者をやめる 読者になる 読者になる

Android アプリケーションを JUnit でテストするための Hello World

JUnit Android

JUnit を使ったことないので非常に苦戦していますがとりあえずテストを動かせたのでメモしておきます。Eclipse を使っています。

テスト対象の MainActivity

package com.japan;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    public int addNumber(){
      return 1 + 2;
    }

}
  • onCreate メソッドonCreateOptionsMenu メソッドは Andorid プロジェクトを作ったのときに自動生成されたもので、今回は触っていない。追加したのは 3 を返すだけの addNumber メソッド

MainActivity をテストするためのテストコード

package com.japan.test;

import com.japan.*;
import android.test.ActivityInstrumentationTestCase2;

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{
  private MainActivity mActivity;

  public MainActivityTest(){
    super("com.japan", MainActivity.class);
  }
  public void testTokyo(){
    MainActivity mActivity = getActivity();
    assertEquals(3, mActivity.addNumber());
  }
}
  • 適当に android.test.ActivityInstrumentationTestCase2 というものを使っているけど、テストの用途によって使い分ける必要がある。
  • getActivity メソッドでテスト対象の MainActivity を取得しているようだ。
  • 「Run as」-> 「Android JUnit Test」でテストを実行する。「JUnit Test」を選択してもエラーが出て動かない。