2017-11-08 1 views
1

간단한 에스프레소 테스트를 통해 애니메이션 문제로 판단 할 수있는 가시성을 확보하지 못했습니다. 기기의 모든 애니메이션 설정을 사용 중지했습니다.에스프레소로 테스트하는 동안 ViewProperyAnimators를 사용할 때의 경쟁 조건

bannerLayout.animate() 
     .y(0) 
     .setInterpolator(new DecelerateInterpolator(1)); 

와 에스프레소 내 주장은 주장이 테스트 통과하게하기 전에 잠을 추가

onView(withId(R.id.banner_layout)).check(matches(not(isDisplayed()))); 

입니다.

답변

0

프레임 워크에 의존하지 않고 명시 적으로 애니메이션을 시작하면 문제가 해결된다는 것을 알게되었습니다.

bannerLayout.animate() 
    .y(0) 
    .setInterpolator(new DecelerateInterpolator(1)) 
    .start(); 

Android docs 상태 :

공극 (시작)

즉시 현재 보류 속성 애니메이션을 시작합니다. start() 호출은 모든 애니메이션이 다음 번에 에 자동으로 시작되기 때문에 선택 사항입니다. 그러나 을 즉시 시작하여 동기식으로 동기화해야하는 경우 (다음 이벤트가 이 계층 구조로 처리 될 때가 아니라 애니메이션이 시작될 때 )이 방법을 사용할 수 있습니다.

간단한 애니메이션 인 경우이 값은 정상입니다. 성능 문제가있는 복잡한 시나리오가 있다면이 방법이 적합하지 않을 수 있습니다.

+0

dev 설정에서 애니메이터를 사용 중지 해 보셨습니까? –

+0

@Be_Negative yep. 그것은이 문제를 해결하지 못하는 것 같습니다. 모든 애니메이션을 비활성화하고 TransitionManager FWIW를 사용할 때도이를 보았습니다. – loeschg