1

내 앱에서 실제 상황에서 에스프레소 테스트를 실행하려고합니다. 문제는 테스트가 실행되지 않는다는 것입니다. Espresso은 유휴 상태를 감지하여 대기열에 이벤트를 주입 할 수 없기 때문입니다. 따라서 알려진 ASYNC_TASKS_HAVE_IDLED 오류로 중단되고 종료됩니다.AsyncTask를 끝내지 않는 에스프레소 테스트

왜 이런 일이 발생합니까?

응용 프로그램은 SignalR 라이브러리를 사용하며 응용 프로그램 시작시 초기화됩니다. "Library GitHub url". 이 라이브러리는 서버와 모든 종류의 메시지 및 이벤트를 보내고 받기 위해 여러 개의 긴 폴링 연결을 만듭니다.

이러한 연결은 AsyncTask (class url)로 구현되며, 그들은 거의 끝 없다 (그리고 그들이 할 때, 그들은 즉시 다시 시작) 이후, 에스프레소는 idle 상태를 감지하고 실행을 계속하는 아주 작은 기회가있다.

그래서이 문제에 대한 해결 방법이 있습니까? 이 때문에 UIAutomator으로 전환해야합니까?

참고 : SignalR이 옵션을 선택하지 않습니다 비활성화

  • SignalR 비웃음
  • (시도는, 테스트는 내가 응용 프로그램의 포인트를 누락 작동하지만)도 옵션이 아닙니다. 실제 데이터를 테스트하고 싶습니다.

감사합니다.

답변

0

또한 많은 비동기가 있습니다. 내 애플 리케이션에 작업 ..

  1. 등록 된 공회전 리소스입니다.
  2. 내가 멈추거나/기다릴 필요가있을 때 거짓으로 만들었습니다.
  3. 진행하고 싶을 때 사실로 만들었습니다.
  4. 하지만 전화가 많이 걸리면 작동하지 않습니다. 그렇지 않으면 내 간단한 경우에 잘 작동합니다. 메일 페이지가로드 될 때까지

@Before 
    public void registerIdlingResource() { 
     Utils.idle = true; 
     mIdlingResource = mActivityRule.getActivity().getIdlingResource(); 
     Espresso.registerIdlingResources(mIdlingResource); 

} 

----------------------------- 

@After 
    public void unregisterIdlingResource() { 
     if (mIdlingResource != null) { 
      Espresso.unregisterIdlingResources(mIdlingResource); 
     } 
    } 


------------------- 
signIn(); 
Utils.idle = false; 
onView(withId(R.id.ll_reports)).perform(click()); 
Utils.idle = false; 

방법 로그인 후 나는 기다립니다. 그런 다음 ID가 ll_reports 인 레이아웃을 클릭합니다. 그런 다음 다시 수행 할 다음 작업을 기다립니다.

+0

답장을 보내 주셔서 감사합니다. 유휴 리소스는이 경우 따라야 할 일반적인 경로 중 하나이지만 유감스럽게도 유휴 리소스를 등록 또는 등록 취소 할 수 없기 때문에 라이브러리 소스에 액세스 할 필요가 없습니다. 위의 사례에서 적절한 해결책이 없다고 생각합니다. – bajicdusko