我嘗試使用Robolectric爲我的Android應用程序運行測試,該應用程序使用android-support軟件包。在我的onCreate()方法中,我致電讓robolectric使用android兼容包
getSupportLoaderManager().initLoader(0, null, this);
不幸的是,getSupportLoaderManager()在此處返回null。我需要準備什麼才能使相容性類可用於robolectric?
我的測試項目中的類路徑中有android.jar(android-8)和android-support-v4.jar以及robolectric-1.2快照版本。
測試類:
@RunWith(RobolectricTestRunner.class)
public class HoebAppActivityTest {
@Test
public void shouldStartActivity() {
final MyActivity activity = new MyActivity();
System.out.println(activity.getSupportLoaderManager()); // return null
activity.onCreate(null);
}
}
編輯:
System.out.println(Robolectric.directlyOnFullStack(activity)
.getSupportLoaderManager());
輸出[email protected]所以我想,我只需要養活這回的活動?似乎我在這裏靠近了。
EDIT2:我想結合我自己的ShadowFragmentActivity:
@Implements(FragmentActivity.class)
public class ShadowFragmentActivity extends
com.xtremelabs.robolectric.shadows.ShadowFragmentActivity {
@RealObject
private FragmentActivity realActivity;
@Implementation
public LoaderManager getSupportLoaderManager() {
return Robolectric.directlyOnFullStack(realActivity)
.getSupportLoaderManager();
}
}
綁定
Robolectric.bindShadowClass(ShadowFragmentActivity.class);
這似乎暫時工作。我將不得不進一步嘗試看看它是否符合我的要求。不知道這是否是正確的方式。
你能分享一些代碼嗎?您是否也能夠在測試項目中獲得基本的Robolectric測試?這只是爲了驗證您是否已正確配置所有依賴關係。 – smk
如果我刪除了getSupportLoaderManager()調用,測試運行成功 – koljaTM
我認爲這是正確的方法。我只會向Robolectric github存儲庫提交請求,所以任何人都可以在未來受益:) –