【发布时间】:2011-05-01 00:49:11
【问题描述】:
我正在编写一些单元测试,并且由于这个特定应用程序的性质,重要的是我尽可能在UI 链中处于较高位置。所以,我想做的是以编程方式触发按钮按下,就好像用户按下了GUI 中的按钮。
(是的,是的——我可以只调用IBAction 选择器,但同样,这个特定应用程序的性质使得我假装实际按下按钮很重要,这样@ 987654324@ 被按钮本身调用。)
这样做的首选方法是什么?
【问题讨论】:
-
您能解释一下为什么伪造按钮触摸而不是直接调用操作方法很重要吗?确实没有实际区别。
-
@Jasarien:嗯,因为有区别! ;) 在我的应用程序中,几个按钮使用相同的操作方法,该方法根据按钮的标签解析行为方式。因此,单元测试除了通过方法测试一个特定的代码路径之外,(a) 需要对它们全部进行测试,并且 (b) 还需要验证按钮是否正确连接。此外,它很好地抽象了我的单元测试套件,因为我可以将单元测试定义为文本文件中的行,如下所示:“1 + 2 = 3”其中“3”是预期的结束显示,以及之前的所有内容是按下哪个按钮。
-
那么您的操作方法没有 (id)sender 参数吗?你不能只调用方法并将按钮作为发送者传递吗?
-
由于我的测试工具的抽象性质,我不知道需要为特定按钮调用的方法。我想我可以深入研究按钮并获取它,但是执行 sendActionsForControlEvents: 为我完成了所有这些操作,出错的机会更少,并保持测试抽象并符合设计。
标签: ios iphone uibutton touch-event