2014-06-10 175 views
10

是否有使用Espresso等待特定活動完成或啓動的規範解決方案?Android Espresso:等待活動完成/啓動

我有一個SplashActivity,出現幾秒鐘,然後MainActivity。我想Espresso與MainActivity交互,而不是SplashActivity,但我似乎無法找到任何有關等待這種情況的信息。

我能找到的最接近的東西是空閒資源的提及,但我不清楚在這裏如何使用它來等待活動。

回答

5

我猜你的飛濺活動正在執行一些初始化。

如果是這種情況,我的建議是定義某種偵聽器模式,以便在初始化完成時能夠獲得回調。然後,您可以讓Espresso等待使用IdlingResource進行初始化。

注:以下是不完整的代碼,但它是爲了給你怎麼做一個提示:

public class SplashIdlingResource implements IdlingResource, YourApplicationInitListener { 

    // volatile because can be set by a different 
    // thread than the test runner: the one calling back 
    private volatile boolean mIsInitialized; 

    private ResourceCallback mCallback; 

    public SplashIdlingResource() { 
     YourApplication application = // retrieve your Application object 
     mIsInitialized = application.isInitialized(); 
     if (!mIsInitialized) { 
      application.addInitListener(this); 
     } 
    } 

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

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

    @Override 
    public void registerIdleTransitionCallback(ResourceCallback callback) { 
     mCallback = callback; 
    } 

    @Override 
    public void onApplicationInitCompleted() { 
     m_isInitialized = true; 
     if (m_callback != null) { 
      m_callback.onTransitionToIdle(); 
     } 
    } 
} 

凡onApplicationInitCompleted()是你定義及被稱爲回調, Splash Activity以及初始化完成。

最後,通過在測試設置中調用Espresso.registerIdlingResource,將此新的IdlingResource與Espresso註冊。