2014-06-10 8 views
10

특정 활동 완료 또는 대기를 기다리는 에스프레소를 사용하는 표준 솔루션이 있습니까?Android Espresso : 활동 완료/대기 시작

나는 몇 초 동안 나타난 SplashActivity를 가졌고, 그 다음에는 MainActivity를 보였다. 나는 Espresso가 SplashActivity가 아닌 MainActivity와 상호 작용하기를 원하지만, 그러한 조건을 기다리는 것에 대한 어떤 정보도 찾을 수없는 것 같습니다.

내가 찾을 수있는 가장 가까운 것은 유휴 리소스에 대한 언급이지만, 여기에 Activity를 기다리는 데 어떻게 사용할지 명확하지 않습니다.

답변

5

스플래시 활동이 일부 초기화를 수행하고있는 것 같습니다.

이 경우, 제 제안은 초기화가 완료 될 때 콜백을 수신 할 수 있도록 일종의 리스너 패턴을 정의하는 것입니다. 그런 다음 Espresso를 IdlingResource로 초기화 대기 상태로 만들 수 있습니다.

주의 : 다음은 전체 코드 아니지만, 당신에게 이렇게하는 방법에 대한 힌트를 제공하기위한 것입니다 :

onApplicationInitCompleted()는 당신이 정의하는 호출해야 콜백이
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(); 
     } 
    } 
} 

때 스플래시 활동 및 초기화 작업이 완료됩니다.

마지막으로 테스트 설치에서 Espresso.registerIdlingResource를 호출하여이 새로운 IdlingResource를 Espresso에 등록하십시오.