これは、コンパイル構造やテスト設定に問題があるようです。 質問にコンパイルのセットアップとテストコードの詳細を投稿すると便利です。
あなたは「メソッドが...嘲笑ない」取得しているので、あなたは明らかにすでにAndroidの付属モック優しいテストライブラリを使用しています。 Android SDKの最近のバージョンには、mockable Android jarが含まれています。最初はAndroid StudioとAndroidのgradleツールチェーンに付属しています。これにより、すべての実装がモックアップ可能なので、RobolectricやPowerMockitoを使用する必要はありません。
実行時に、すべてのfinal
修飾子が削除されたandroid.jarの修正版に対してテストが実行されます。これにより、Mockitoのような人気の模擬ライブラリを使用できます。
のjavacは、静的なディスパッチ(すなわち、動的または仮想ではない)を使用して、静的、最終的なメソッドの呼び出しをコンパイルすることができますので、あなたが任意の中間成果物をコンパイルする場合は、あなたがこのfinal
フリーのライブラリを活用自分ができないかもしれませんかライブラリは、のにはandroid.jarのバージョンに対してfinal
の修飾子が含まれています。バイトコードの最後のメソッドへの呼び出しがある場合、唯一残っているオプションは、RobolectricとPowerMockのようにバイトコードをインターセプトまたは書き換えることです。 PowerMockとそのPrepareForTestアノテーションは正しく動作するようにするのは難しい場合があります。そのため、失敗した場合は、ここにコードを投稿して見たい場合があります。
もちろん、テスト対象システムが新しく提供されたモックを使用することを保証する責任はあなたにあります。 PowerMockはコンストラクタへの呼び出しを傍受することができ、RobolectricはAndroidクラス全体を独自の代替方法で置き換えますが、その依存関係を一方的に注入する必要があるだけです。