私はAndroidに少し慣れていないので、テストプロジェクトにHamcrestマッチャーを含める方法について何時間も苦労しています。コードはEclipseで実行されるはずであり、エラーは示されていません。しかし、テストを実行すると、Hamcrestクラスがロードされていません。「NoClassDefFoundError:org.hamcrest.Matchers」が表示されます。
私は過去3時間、フォーラムを調べて、誰かが以前にこれに遭遇したことがあると考えましたが、運がありませんでした。IDEはクラスを見ることができるので、私は愚かなことをしているに違いありませんが、ランタイムはそうではありません。
テストソースは次のとおりです。
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import org.hamcrest.Matcher;
import android.test.InstrumentationTestCase;
public class AppDescLoaderTest extends InstrumentationTestCase {
public void testHamcrest() {
assertThat(3, equalTo(3));
}
}
hamcrest-all-1.2.jarをライブラリおよび外部jarとして追加してみました。どちらの方法でも同じ結果になります。コードはIDEで正常に見えますが、実行時にクラスをロードできません。
私の理論では、hamcrest.jarは.apkファイルと一緒に使用されないため、そのクラスはロードされません。それが本当なら、どうすればそれを.apkファイルと一緒にAndroidにプッシュすることができますか?