2017-11-08 12 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

関連する問題