AnimatorTestRule
class AnimatorTestRule : TestRule
kotlin.Any | |
↳ | androidx.core.animation.AnimatorTestRule |
JUnit TestRule
that can be used to run Animator
s without actually waiting for the duration of the animation. This also helps the test to be written in a deterministic manner. Create an instance of AnimatorTestRule
and specify it as a org.junit.ClassRule
of the test class. Use advanceTimeBy(long)
to advance animators that have been started. Note that advanceTimeBy(long)
should be called from the same thread you have used to start the animator.
@SmallTest @RunWith(AndroidJUnit4.class) public class SampleAnimatorTest { @ClassRule public static AnimatorTestRule sAnimatorTestRule = new AnimatorTestRule(); @UiThreadTest @Test public void sample() { final ValueAnimator animator = ValueAnimator.ofInt(0, 1000); animator.setDuration(1000L); assertThat(animator.getAnimatedValue(), is(0)); animator.start(); sAnimatorTestRule.advanceTimeBy(500L); assertThat(animator.getAnimatedValue(), is(500)); } }
Summary
Public constructors | |
---|---|
<init>() |
Public methods | |
---|---|
Unit |
advanceTimeBy(timeDelta: Long) Advances the animation clock by the given amount of delta in milliseconds. |
Statement |
apply(@NonNull base: Statement, @NonNull description: Description) |
Long |
Returns the current time in milliseconds tracked by AnimationHandler. |
Public constructors
<init>
AnimatorTestRule()
Public methods
advanceTimeBy
fun advanceTimeBy(timeDelta: Long): Unit
Advances the animation clock by the given amount of delta in milliseconds. This call will produce an animation frame to all the ongoing animations. This method needs to be called on the same thread as Animator#start()
.
Parameters | |
---|---|
timeDelta |
Long: the amount of milliseconds to advance |
apply
@NonNull fun apply(
@NonNull base: Statement,
@NonNull description: Description
): Statement
getCurrentTime
fun getCurrentTime(): Long
Returns the current time in milliseconds tracked by AnimationHandler. Note that this is a different time than the time tracked by @{link SystemClock} This method needs to be called on the same thread as Animator#start()
.