我正在为带有动画的 Activity 编写单元测试。动画是具有无限持续时间(启动画面)的微调器可绘制对象的简单旋转。
当我开始单元测试时,每个测试似乎都等到动画完成,所以它们无限期地卡住,当我将持续时间设置为 1 时,它全部通过,导致动画很快结束。
我如何覆盖它,以便测试不等待动画结束?
最佳答案
我假设您打算测试动画以外的行为。
将动画移出要测试的代码的路径可能会让您获益最多。这意味着将其他代码(不依赖于动画的代码)移出 Activity。如果不跳出Activity,那么,至少跳出Activity 的生命周期方法(onCreate(), ...)。然后您可以在根本不运行该行为的情况下检查该行为。更好的办法是在根本不启动 Activity 的情况下运行行为(不要调用 onCreate())。
您遇到的问题是当您将代码直接放入框架扩展点时发生的情况的特例:您的代码随后与框架混合在一起,并且您无法运行一些您不关心的东西,以便运行您确实关心的部分。所以不要那样做。将您的代码放在不依赖于框架的类中,然后使用框架扩展点(在本例中为 Activity)将 Android 连接到您的代码。 Activity 知道你的代码存在;您的代码仍然对 Android 一无所知。现在,您的动画之类的东西不能成为阻碍。
关于 Activity 有动画时的Android单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240491/