10
是否有使用Espresso等待特定活動完成或啓動的規範解決方案?Android Espresso:等待活動完成/啓動
我有一個SplashActivity,出現幾秒鐘,然後MainActivity。我想Espresso與MainActivity交互,而不是SplashActivity,但我似乎無法找到任何有關等待這種情況的信息。
我能找到的最接近的東西是空閒資源的提及,但我不清楚在這裏如何使用它來等待活動。
是否有使用Espresso等待特定活動完成或啓動的規範解決方案?Android Espresso:等待活動完成/啓動
我有一個SplashActivity,出現幾秒鐘,然後MainActivity。我想Espresso與MainActivity交互,而不是SplashActivity,但我似乎無法找到任何有關等待這種情況的信息。
我能找到的最接近的東西是空閒資源的提及,但我不清楚在這裏如何使用它來等待活動。
我猜你的飛濺活動正在執行一些初始化。
如果是這種情況,我的建議是定義某種偵聽器模式,以便在初始化完成時能夠獲得回調。然後,您可以讓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註冊。