私は Android のテストを始めたばかりで、何人かが私を助けてくれれば本当に感謝しています。自動テスト フレームワークとして robotium を使用しています (これまでのところ非常に優れています) が、mockito または Easy Mock を使用してテストにいくつかのモックを追加する方法がわかりません。私は本当にそれで立ち往生しています。誰かがこれを達成する方法について簡単な例を教えてもらえますか?
前もって感謝します
短い回答/意見
Androidの単体テストにMockitoを使用することはお勧めしません。Android環境は、モックするには複雑すぎると感じています。Androidユニットテストの基本的なアプローチは、エミュレーター内でそれらを実行することです。したがって、コンテナクラスの多くはすでに存在しており、モックする必要はありません。
長い答え
また、Androidの単体テストの世界にも比較的慣れていません。私は長い間サーバー側の単体テストを作成してきましたが、Mockitoは単体テストを簡素化するための最良のツールの1つであることがわかりました。Mockitoは、複雑なオブジェクトの動作をモックするのに非常に役立ちます。これは、テスト対象のコードがコンテナー(サーブレットコンテナーやOSGIコンテナーなど)または他の複雑なコラボレーター(データベース接続クラスなど)に依存している可能性がある場合に役立ちます。
この種のモックは、コンテナー/コラボレーターが明確に定義されたインターフェースを持っている場合にうまく機能します。
数か月前、Android開発でMockitoを試してみることにしました。少なくとも1.9.5とdexmakerがあれば、Mockitoは機能することがわかりました。Dexmakerは、AndroidのDalvikVMのランタイムバイトコード生成を処理します。
最初のテストで最初に試したのは、android.content.Contextをモックすることでしたが、それがHARDであることがわかりました。最初は直接呼び出したメソッドだけをモックしようとしましたが、アプリケーションリソースに依存する他のメソッドを呼び出していることがわかりました...結局、モックが非常に複雑になり、最初にMockitoを使用する目的が果たせなくなりました。場所。
そこで、私はAndroidユニットテストヘルパークラス(AndroidTestCase、ActivityUnitTestCase、...)をあきらめて使い始めました。テストの実行が遅いことを意味するエミュレーターに依存する必要があることに落胆しました。おそらく、Mockitoはまだこのタイプのテストの場所を持っています。外部データソースのようなものをモックするのに役立つかもしれません。
とにかく、これは私の2セントです。