我在写一些单元测试,而且由于这种特殊的应用程序的性质,我得到尽可能高了UI链可能是很重要的。所以,我希望做的是编程触发后的按键,因为如果用户曾在GUI按下按钮。

(是的,没错 - 我的可能的只是调用IBAction选择,但同样,这个特定的应用程序的性质使得它重要的是,我假装实际按下按钮,使得IBAction被称为从按钮,本身。)

什么是这样做的优选方法?

有帮助吗?

解决方案

事实证明

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];

让我正是我需要的,在这种情况下。

编辑:不要忘记这样做在主线程,以获得类似于用户按下结果


:用于夫特3:

buttonObj.sendActions(for: .touchUpInside)

其他提示

的更新此答案为夫特

buttonObj.sendActionsForControlEvents(.TouchUpInside)

修改:更新了夫特3

buttonObj.sendActions(for: .touchUpInside)

如果你想要做这种测试,你一定会喜欢在iOS中4 UI自动化支持您可以编写JavaScript来模拟按下按钮,等很容易,虽然文件(特别是工具入门部分)有点稀疏

在这种情况下,UIButtonUIControl的。这适用于从对象衍生UIControl

我想重用具体的使用情况下,“UIBarButtonItem”动作。这里,UIBarButtonItem不提供方法sendActionsForControlEvents:

但幸运的是,UIBarButtonItem具有用于靶动作性能。

 if(notHappy){        
         SEL exit = self.navigationItem.rightBarButtonItem.action;
         id  world = self.navigationItem.rightBarButtonItem.target;
         [world performSelector:exit];
 }

下面,rightBarButtonItem是类型UIBarButtonItem的。

夫特3:

self.btn.sendActions(for: .touchUpInside)

有关Xamarin的iOS

btnObj.SendActionForControlEvents(UIControlEvent.TouchUpInside);

参考

夫特4:

自.yourButton(个体)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top