如何对UIGestureRecognizer子类进行单元测试?

时间:2010-08-02 07:27:52

标签: iphone ipad unit-testing uikit tdd

是否有人成功测试了UIGestureRecognizer的子类?如果是这样,您使用或推荐什么方法?如果是这样,你如何合成事件呢?

3 个答案:

答案 0 :(得分:0)

它不完全是单元测试,但是如何测试用户界面的最佳方法是使用自动化。 基本上你写了一个javascript,然后你在Automation下的Instruments中运行它。

它没有很好地记录,几乎没有教程。准备沮丧。

答案 1 :(得分:0)

我正在使用Cedar并计划通过模拟NSTouch对象,将它们捆绑为一组,并对各种UITouchGestureSubclass点进行适当调用来测试自定义UIGestureRecognizers。此单元测试自定义类。通过调用在UIGR子类上注册的action方法测试父类的行为。

答案 2 :(得分:0)

我还没有看到一个好的单元测试解决方案,我很快就需要找到一个,所以我很乐意看到或者有更好的答案。

正如@tooluser建议你可以为UITouch对象提供“漂亮”的模拟。因为UITouch没有提供“真正的”UITouch实例的公共构造函数很棘手并且依赖于私有API调用。不幸的是,由于那些触摸模拟需要通过框架代码,你无法看到或控制你必须希望你的模拟实际上匹配他们加倍的UITouches的所有预期行为(包括我们看不到的任何私人行为)。这让我很紧张。

或者,您可以关注@ Sulthan的解决方案,并通过UI驱动集成测试测试您的手势识别器。这是我到目前为止使用的方法。使用UIAutomation或第三方测试框架(如FrankKIF)生成与视图的交互,并声明手势识别器按预期触发。这至少可以让你单独测试识别器(即使不是真正的单元测试)。

我通常想要进行一些集成测试,以验证自定义视图中多个识别器之间的交互是否正常运行,所以我发现这种方法太糟糕了,但真的能够测试驱动器的开发会很好。单位级别的识别器(如果没有别的话,用于测试执行时间)。