Androidの画面遷移の自動テストをする方法として、ActivityInstrumentationTestCase2を使うサンプルを紹介してくださっているブログなどは見かけるのですが、 Fragmentを使った場合のものが見つからなかったのでサンプルを作ってみました。
ActivityではActivityMonitor#getLastActivity()などでモニタしているActivityのインスタンスを取得できますが、 Fragmentのインスタンスを取得しようとすると、そういったテスト用のメソッドがなく FragmentManager#findFragmentByTag()などで取得するしかなさそうです。
Activityの場合はActivityMonitor#getHits()で呼び出されたかどうかを確認できますが、 Fragmentの場合で考えられるのは以下のようなものでしょうか。
サンプルでの画面遷移は次の通りです。 角括弧内はActivityの前面にあるFragmentを示します。
MainActivity[Fragment1]
↓R.id.btnFrag1タップ
MainActivity[Fragment2]
↓R.id.btnFrag2タップ
SecondActivity
↓Backキー
MainActivity[Fragment2]
↓Backキー
MainActivity[Fragment1]
以下が、上記遷移をテストするコードです。
Fragment
実際にうまくテストできているかどかは、例えばFragmentTransaction#commit()をコメントアウトしてみたりすると分かります。
ソースコード全体はGitHubで公開しました。
https://github.com/ksoichiro/AndroidUnitTestSamples/tree/v2013.0216.1236
この中の、TransitionSampleです。