iphone - 如何等待单元测试动画完成

标签 iphone unit-testing animation core-animation ocunit

我正在使用 Xcode 的 OCUnit 编写单元测试,并且我的测试调用执行动画的方法。 我希望测试方法仅在动画完成后继续。

执行动画的方法没有动画委托(delegate),我认为它不应该有。

如何在测试方法中等待动画结束而不设置动​​画委托(delegate)?

最佳答案

你不想真正等待动画;这将花费动画运行所需的时间。如果您有几千次测试,这可能会增加。

更有效的方法是在类别中模拟出UIView静态方法,以便立即生效。然后将该文件包含在您的测试目标中(但不是您的应用程序目标),以便该类别仅编译到您的测试中。我们使用:

#import "UIView+SpecFlywheel.h"

@implementation UIView (SpecFlywheel)

#pragma mark - Animation
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion {
    if (animations)
        animations();
    if (completion)
        completion(YES);
}

@end

上面只是立即执行动画 block ,如果也提供了完成 block ,则立即执行。

关于iphone - 如何等待单元测试动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066667/

相关文章:

c# - 如何正确改进 ItemsControl 加载并避免卡顿

iphone - iOS 上的假长曝光

iphone - 如何在通用应用程序内的多个设备之间共享数据以保持应用程序同步?

Android Studio 单元测试 - 缺少 android.net.Uri

jquery - 在 jquery 中停止父函数时防止回调被停止?

javascript - 如何在 Angular2 中使用 jquery 和其他 .js 库

ios - iPhone 在 API 调用后重启

iphone - 平行阵列

javascript - 在 WebStorm 中通过断言的测试失败

python - Python UnitTest 中的 assertEqual 应该做什么?