やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

Support Packageを使用したAndroidアプリのテストプロジェクト設定

製品プロジェクトにSupport Package(旧 Compatibility Package)を使用しているときのテストプロジェクトの設定について。

テストプロジェクトのBuild PathにSupport Packageのjarファイル(android-support-v4.jar)を追加していても、Support Packageに含まれるClass(今回はAsyncTaskLoader)のテストケース実行時にjava.lang.NoClassDefFoundErrorが発生し、テストが失敗します。


解決方法は以下の通り。

  1. テストプロジェクトのBuild Pathからandroid-support-v4.jarを取り除く
  2. 製品プロジェクト(テスト対象プロジェクト)のPropertiesを開く→[Java Build Path]を選択→[Order and Export]タブを開いて"android-support-v4.jar"のチェックボックスをonにする

これで、製品プロジェクトとテストプロジェクト双方から同じjarを参照することになり、テストが正しく実行されました。*1
#使用したバージョン: Support Package, revision 6 (December 2011)


いつもながらStack Overflowさんには感謝。
android - FragmentActivity can not be tested via ActivityInstrumentationTestCase2 - Stack Overflow

*1:failしたけどな!