Androidでmockito+hamcrestを使うとエラーになる件

2013-05-23T00:00:00+00:00 Android

Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description

っていうようにテストを起動したりしようとするとこういうエラーが出ちゃう。その原因っていうが単純でmockitoの中にhamcrestのインターフェース群っぽいのが含まれている模様なので、これのクラスとhamcrestのjarに含まれているクラスが衝突してclasses.dexを生成するにあたってエラーになるんじゃないかと

まぁmockito内のhamcrestの参照を消せば動くっちゃ動く。でAndroidなJUnitは3.8.x?系がベースだと思われるんだけど、JUnit3ってassertThat無いよねと。org.hamcrest.MatcherAssertにassertThatが含まれているので、Androidで使うときはそれをstatic importなりをすれば良いかと

とにかく、Androidでmockitoを使ってる場合にhamcrestを使おうとするとそういう問題が出るっていうのが把握

解決策

ActionBarSherlockでSearchView DialogFragmentのテスト