Android、Java、Web系、Linux、マラソン等の備忘録

2013/06/06

JUnitから起動したService上でのApplicationのClassCastException

0 件のコメント
AndroidManifest.xmlに
<application
    android:name="net.takaiwa.MyApplication"
  ・・・
</application>
と定義しており、android.app.Applicationを継承しているMyApplicationというクラスがあるのだけど、これをMyApplication app = (MyApplication)this.getApplication();とキャストして使っているServiceをJUnitのServiceTestCaseを継承しているクラスからstartServiceで起動すると以下のようなエラーが出て失敗する。

java.lang.ClassCastException: android.test.mock.MockApplication cannot be cast to net.takaiwa.MyApplication

これを検索しても、特に言及されてるページが出て来ないので、そもそもの部分で何かが間違っている気がしてならない。JUnit「そんな継承されたやつは生成してねーよ」って話なんだろうけど、一応、JUnitからでもActivity内および、Activityから起動したService内であればエラーがでない模様。

なお、MyApplicationでOverrideしているonCreateメソッドは呼ばれている模様。

追記:2014/01/05

解決方法を以下に記述しました。
試行錯誤ログ: AndroidのカスタムApplicationをテストで差し替える
http://www.takaiwa.net/2014/01/androidapplication.html

PR:入門 Androidアプリケーションテスト

0 件のコメント :

コメントを投稿