[英]Robolectric Test for ProgressDialog in android
我有兩種方法
public void showProgress() {
progressDialog = ProgressDialog.show(LoanDemandDetails.this, "", resourceUtil.getLabelById(R.string.uploading_loan_demand), true, false);
}
和
public void onHideProgressDialog() {
progressDialog.hide();
}
我想使用 Robolectric 測試這些功能。
我為showProgress
編寫了一個測試用例,它通過了,如下所示。
@Test
public void showProgressDialog() {
activity.showProgress();
ProgressDialog dialog = (ProgressDialog) ShadowProgressDialog.getLatestDialog();
assertEquals("Uploading Loan Demand...", shadowOf(dialog).getMessage());
}
同樣,當我為hideProgressDialog
編寫測試用例時,它失敗了。
@Test
public void hideProgressDialog(){
activity.showProgress();
activity.onHideProgressDialog();
ProgressDialog dialog1 = (ProgressDialog) ShadowProgressDialog.getLatestDialog();
assertFalse(dialog1.isShowing());
}
任何的想法? 提前致謝!
看起來,在實際隱藏對話框之前,檢查對話框是否顯示的代碼執行得太快了。 我想建議在執行之間添加一個有意的Thread.sleep
如下。
@Test
public void hideProgressDialog() throws Exception {
activity.showProgress();
activity.onHideProgressDialog();
// Introduce some intentional delay here
Thread.sleep(2000); // 2 seconds delay added
// Now check if the tests are passing.
ProgressDialog dialog1 = (ProgressDialog) ShadowProgressDialog.getLatestDialog();
assertFalse(dialog1.isShowing());
}
如果您使用 RxJava,您可以使用TestScheduler
以優雅的方式執行此操作,而不是在您的測試代碼中使用Thread.sleep
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.