2

を使用してAndroidアプリケーションのテストを実行する方法を発見していますJUnit。これまでのところRobolectric、フィードバックがより速く、はるかに簡単になるため、選択しました。

残念ながら、最初のテストが失敗し、原因を突き止める方法を探しています。ログ@Before@Testメソッドを試しましたが、ランナーの初期化のどこかで停止したようです。

Robolectric 1.1、JUnit 4.8.2、IntelliJ IDEA、Android4.1SDKを使用しています。

UPD:IDEAでテストの実行を一時停止し、Runnerが何らかのジョブを実行しているのに、スタックしているか、これらのメソッド内にループがあるように見えることで、さらに進んでいます。

getAndroidResourcePathByExecingWhichAndroid():327, ResourceLoader {com.xtremelabs.robolectric.res}

getAndroidResourceSubPath()
4

1 に答える 1

2

この問題の原因はわかりませんでしたが、回避策を考案することができました。

robolectric ソースを見ると、ResourcePathLoader クラスはリソース パスを取得するために多くの方法を試みているように見えます。最後の方法は getAndroidResourcePathByExecingWhichAndroid() です。

通常、Intellij の場合、「local.properties」ファイルから SDK パスを検索することになっています。Intellij は通常、プロジェクトをゼロから作成するときにこのファイルを作成しますが、何らかの理由で私のプロジェクトにはありませんでした。

回避策は、local.properties ファイルを作成し、プロジェクトのルート レベルに保存することです。

sdk.dir=<SDK_PATH>

<SDK_PATH>Android SDK が存在するパスはどこにありますか。テストを実行すると、動作するはずです。

于 2012-10-03T20:09:19.077 に答える