2014-01-23 50 views
2

爲了測試軟件與谷歌咖啡測試框架,我有以下問題:延遲咖啡不能處理

在程序,閃屏啓動的啓動和初始化整個應用程序。在此之後,我開始一個活動,要求輸入。

在Espresso中,應用程序啓動並且測試從以下代碼開始: onView(withId(R.id.chooseBookTitle))。perform(click());

這崩潰,因爲顯示仍然顯示啓動畫面和chooseBookTitle纔可見算賬。如何防止Google-Espresso在鍵入之前點擊鍵?

(我不想插入等待循環,但保持事件驅動在最壞的情況下,我回去Robotium。)

+0

是chooseBookTitle從啓動屏幕啓動的活動視圖?如果是這樣,Espresso應該照顧時間,並等待UI線程是idel。你可以張貼一些代碼來澄清? – Bolhoso

+0

使用下面的單行代碼來測試任何Test Espresso測試用例: SystemClock.sleep(1000); // 1 Second – user5800586

回答

1

請檢查IdlingResource接口:

正如斯特凡諾Dacchille提到(見下面的示例),你必須創建一個等待成爲閒置空轉的ressource實現:

public class WaitForSomethingResource implements IdlingResource { 

ResourceCallback mResourceCallback; 

private boolean isIdle; 

@Override 
public String getName() { 
    return WaitForSomethingResource.class.getName(); 
} 

@Override 
public void registerIdleTransitionCallback(
     ResourceCallback resourceCallback) { 
    mResourceCallback = resourceCallback; 
} 

@Override 
public boolean isIdleNow() { 
    return isIdle; 
} 

/** 
* Register an listener, use an event bus or something 
* else to get notified about any change you want to track. 
*/ 
public void onProgressChanged() { 
    isIdle = true; 

    if (isIdle && mResourceCallback != null) { 
     mResourceCallback.onTransitionToIdle(); 
    } 
} 

}

之後,你個人有T O寄存器通過書面測試設置中的IdlingResource實現()或@Before方法:

Espresso.registerIdlingResource(waitForSomethingResource) 

樣品: http://dev.jimdo.com/2014/05/09/wait-for-it-a-deep-dive-into-espresso-s-idling-resources/

API文檔: http://developer.android.com/reference/android/support/test/espresso/IdlingResource.html#isIdleNow()

+0

使用下面的這行代碼來測試任何Test Espresso測試用例: SystemClock.sleep(1000); // 1 Second – user5800586

0

從我所看到的,你應該打開直接包含R.id.chooseBookTitle的活動,否則您的視圖將永遠不會顯示在屏幕上,因此您的測試將始終失敗,因爲Espresso無法找到指定的視圖。

否則,我使用了Thread.sleep(...)之前,我做了一些測試,以測試等待。在調用onView之前嘗試它(withId(R.id.chooseBookTitle))。perform(click());並看看它是否工作。

祝你好運!

+0

使用下面的這行代碼來測試任何Test Espresso測試用例: SystemClock.sleep(1000); // 1秒 – user5800586