ホーム DoRuby Android UnitTest

Android UnitTest

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Androidアプリのテストコードを書いてみました。
今回は画面遷移に関するテストコードです。

事前にunitテストの環境を準備する必要があります。

下記などを参考にさせて頂きました。

http://www.yaunix.com/2011/01/08/android%E3%81%A7%E3%81%AEunittest%E3%81%AE%E5%A7%8B%E3%82%81%E6%96%B9/ (410 Gone)

 Activityコード

public class MainActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout contentView = getContentView();
        setContentView(contentView);
    }
    
    private LinearLayout getContentView() {
        LinearLayout l = new LinearLayout(this);
        Button button = new Button(this);
        button.setText("ターゲットへ遷移するボタン");
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClassName(getApplicationContext(), TargetActivity.class.getName());
                startActivity(intent);
            }
        });
        l.addView(button);
        return l;
    }

}

 テストコード

/**
 * 
 * ActivityInstrumentationTestCase2を継承したクラスを作成する 
* テストするクラスを指定する(MainActivity) * */ public class MainActivityTest extends ActivityInstrumentationTestCase2<mainactivity> { /** * 次の画面へ遷移するためのボタン */ private Button button; /** * コンストラクタ * テストするクラスを指定する(MainActivity) */ public MainActivityTest() { super("MainActivityTest",MainActivity.class); } /** * テスト前の準備 */ @Override protected void setUp() throws Exception { super.setUp(); /** * Buttonを取得しておく */ button = (Button) getActivity().findViewById(1); } public void testOnClick() { getActivity().runOnUiThread(new Runnable() { @Override public void run() { /** * 遷移先のクラスをMonitorにセットする */ ActivityMonitor monitor = new ActivityMonitor(TargetActivity.class.getName(), null, true); getInstrumentation().addMonitor(monitor); /** * Buttonをクリックする * (押せることもテストしておく) */ assertTrue(button.performClick()); /** * 画面遷移したあとのクラスを取得する */ Activity next = getInstrumentation().waitForMonitorWithTimeout(monitor, 10); /** * Monitorでセットしたクラスと画面遷移したクラスが同じことを検証する */ assertEquals(monitor.getHits(), 1); if ( next != null ) { /** *遷移した画面を閉じる */ next.finish(); } } }); } }

次は画面遷移以外のテストコードも投稿できればと思ってます。

参考になれば幸いです。

記事を共有

最近人気な記事