나는 Espresso
이 특정 IdlingResource
의 isIdleNow()
방법을 5 초마다 폴링하는 것으로 나타났습니다.Espresso IdlingResource 폴링 빈도
이 입도를 조정할 수 있습니까?
미리 감사드립니다.
나는 Espresso
이 특정 IdlingResource
의 isIdleNow()
방법을 5 초마다 폴링하는 것으로 나타났습니다.Espresso IdlingResource 폴링 빈도
이 입도를 조정할 수 있습니까?
미리 감사드립니다.
짧은 답변 :
아니, 그것이 IdlingPolicies.dynamicIdlingResourceWarningPolicy
에 구운 및 버전 3.0.1의 같은 외부 구성에 의해 제어 아니에요. 이 정책은 처리기에 게시되는 경고 이벤트 빈도를 제어합니다. 이러한 이벤트는, 차례로, isIdleNow()
약간 더 이상 대답에 전화를 원인 :
그것은 아주 좋은 이유에 대해 다음과 같이합니다. isIdleNow()
은 (는) 애플리케이션 상태를 설정할 수있는 장소가 아닙니다. isIdleNow()
라고 불리는 시점에서 이미 알고 있어야합니다. 상태가되지는 즉시 반환해야 함을 말한다, 그러나 명확하게하지 않는 경우 isIdleNow()
문서는 암시의 내부 ResourceCallback::onTransitionToIdle
일반적으로 (시간의 99 %)로 호출로 업데이트해야합니다.
상태를 isIdleNow()
으로 업데이트하면 스레드를 조건부로 대기 상태로 유지하는 것이 낫지 않습니다. 사실, 테스트가 이제는 테스트 기준으로 5 초 더 느려지므로 더 악화됩니다. 에스프레소가 시험의 결정론을 죽이면 에스프레소의 목적에 어긋납니다. 제 견해로 에스프레소 테스트의 결정론은 기본 스레드 동기화 및 유휴 리소스 인터페이스가 내장 된 덕분입니다.
그런 말로는이 시간 초과를 수정할 필요가 없어야합니다. ResourceCallback::onTransitionToIdle
으로 전화하면이 이벤트가 처리기에 게시되고 에스 프레소가 즉시 진행됩니다.
불행히도 비효율적 인 구현을 촉진하는 예제와 블로그가 많이 있습니다. 에스프레소의 contrib에
DrawerActions$IdlingDrawerListener
번들 : 당신이 더 기존의 공회전 자원을 원하는 경우
이러한 예는 영감의 훌륭한 소스해야한다. here is the source.
CountingTaskExecutorRule
객실 라이브러리에서 여기에 usage이 있습니다.
안녕하세요, 빠르고 자세한 답변을 보내 주셔서 감사합니다. 내가 그것을 읽으면 나는 후에 응답 할 것이다. 다시 한 번 감사드립니다! – oaskamay
안녕하세요 블라드 !! 네 말이 맞아요.이 행동은 에스프레소에서 하드 코딩되어 있습니다. 소스를 변경하고 항아리를 다시 컴파일하는 유일한 방법은 변경할 수 있습니다. 테스트를 진행하기 전에 가시성 (또는 임의의 다른 'View'상태)을 확인하기 위해 일정 간격으로 'ViewAssertion'을 실행하는 결과가 발생했습니다. 이것은 잘 작동하지만 여전히 때때로 Espresso는 유휴 상태가 아닌 백그라운드 작업으로 인해 ViewAssertion을 확인하기에는 너무 오래 기다립니다 (팀이 프로덕션 코드를 모든 비용으로 테스트 코드에서 자유롭게 유지하기를 원하기 때문에 여기서는 선택의 여지가 많지 않습니다. .. 알아, 맞아!). – oaskamay