製品プロジェクトにSupport Package(旧 Compatibility Package)を使用しているときのテストプロジェクトの設定について。
テストプロジェクトのBuild PathにSupport Packageのjarファイル(android-support-v4.jar)を追加していても、Support Packageに含まれるClass(今回はAsyncTaskLoader)のテストケース実行時にjava.lang.NoClassDefFoundErrorが発生し、テストが失敗します。
解決方法は以下の通り。
- テストプロジェクトのBuild Pathからandroid-support-v4.jarを取り除く
- 製品プロジェクト(テスト対象プロジェクト)の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したけどな!