Activity 有动画时的Android单元测试

标签 android animation tdd

我正在为带有动画的 Activity 编写单元测试。动画是具有无限持续时间(启动画面)的微调器可绘制对象的简单旋转。

当我开始单元测试时,每个测试似乎都等到动画完成,所以它们无限期地卡住,当我将持续时间设置为 1 时,它全部通过,导致动画很快结束。

我如何覆盖它,以便测试不等待动画结束?

最佳答案

我假设您打算测试动画以外的行为。

将动画移出要测试的代码的路径可能会让您获益最多。这意味着将其他代码(不依赖于动画的代码)移出 Activity。如果不跳出Activity,那么,至少跳出Activity 的生命周期方法(onCreate(), ...)。然后您可以在根本不运行该行为的情况下检查该行为。更好的办法是在根本不启动 Activity 的情况下运行行为(不要调用 onCreate())。

您遇到的问题是当您将代码直接放入框架扩展点时发生的情况的特例:您的代码随后与框架混合在一起,并且您无法运行一些您不关心的东西,以便运行您确实关心的部分。所以不要那样做。将您的代码放在不依赖于框架的类中,然后使用框架扩展点(在本例中为 Activity)将 Android 连接到您的代码。 Activity 知道你的代码存在;您的代码仍然对 Android 一无所知。现在,您的动画之类的东西不能成为阻碍。

关于 Activity 有动画时的Android单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240491/

相关文章:

tdd - 作为 "mockist"TDD的从业者,我应该模拟与被测方法在同一类中的其他方法吗?

javascript - PhoneGap 推送插件注册 ID 在移动设备上不起作用

android - 如何在android中放置多个 TextView 和 ImageView ?

java - 用新的 AlphaAnimation 覆盖 Dialog dismiss()

javascript - TweenMax 尝试在文本字段上一次为一个字符设置动画

unit-testing - 我是否应该使用不应在函数中传递的数据(无效输入)进行单元测试?

android - 如何使用 Android 加速度计?

java - 带有静态方法的抽象类。那是对的吗?

swift - ViewController 滑动动画

tdd - 我们可以为 TDD 取一个更好的名字吗?