मुझे लगता है कि आपकी स्पलैश गतिविधि कुछ प्रारंभिक प्रदर्शन कर रही है।
यदि ऐसा है, तो मेरा सुझाव है कि प्रारंभिकरण के दौरान कॉलबैक प्राप्त करने में सक्षम होने के लिए कुछ प्रकार के श्रोता पैटर्न को परिभाषित किया जाए। फिर, आप एस्प्रेसो को एक 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() कॉलबैक आप परिभाषित और जो बुलाया जाना चाहिए है जब स्पलैश गतिविधि, और इसलिए प्रारंभिकता, किया जाता है।
अंत में, परीक्षण सेटअप में Espresso.registerIdlingResource को कॉल करके एस्प्रेसो के साथ इस नए IdlingResource को पंजीकृत करें।
स्रोत
2014-06-11 15:23:15