1
robolectric 3.3.2を使用してアクティビティをテストしようとしています。 ダイレクトコールとしてのモックとアクティビティのメンバー初期化がNPEになります。onCreateの前のモックアクティビティクラスメンバー
コード上方試しActivityController<MyActivity> activityController =
Robolectric.buildActivity(MyActivity.class);
mTestActivity = activityController.get();
Mockito.when(mTestActivity.getCountry()).thenReturn("xxxx");
activityController.setup();
が、セットアップ。()(OnCreate関数) はgetCountryメソッドのモックを無視し、アクティビティの定義を呼び出します。
これを達成する方法はありますか?
おかげオイゲン:
あなたはスタブを使用する必要があります。私は上記の解決策を試みた。しかし、それは文字列リソースを見つけることができません。 android.content.res.Resources $ NotFoundException:文字列リソースID#0x7f0d0037。この例外は、私がStubactivityを使用しないときは表示されません。ここに何か間違いがありますか? – jsam
"manifest flie not found"のようなログメッセージが表示されますか? –
マニフェストが配置されました。しかし、私のコードは別のパッケージのリソースを参照していました。RobolectricTesRunnerを拡張し、カスタムパスを追加することで修正されました。 "Rには最終フィールドが含まれていますが、これはコンパイラによってインライン展開され、再マッピングできません"というのは、3.2.1,3.3のようなrobolectricの新しいバージョンで起こっていることです。あなたはこれに気付いていますか? – jsam