我想为我的Cocoa应用程序的GUI部分编写单元测试。如何在Xcode中编写GUI的自动单元测试?
在教科书单元测试中,有一个测试框架和测试用例可以调用被测单元。该单元下的所有代码都被嘲笑。因此,输入和输出都受到控制和监控;只有被测单元中的代码被测试。
我想在被测单元做我的GUI时做同样的事情:
1)设置某种框架,我可以编写代码来操纵和检查GUI控件。
2)连接我的GUI控件来模拟我的实际代码,而不是真实的实例。
3)运行测试,该测试操纵控件,然后检查模拟对象以查看是否使用正确的参数调用了正确的方法,并检查GUI以查看来自模拟对象的响应是否导致小部件的正确更改。
任何人都这样做?如果是这样,怎么样?关于如何做到这一点的任何想法?
感谢,
帕特
(编辑),举个很具体的例子,我想:
1)编写一个测试情况下将选择菜单项 'MyMenu菜单' - >“MyItem ”。在这个测试案例中,我想检查一下,方法[AppDelegate doMyItem]被调用一次,并且AppDelegate中没有其他方法被调用。
2)生成AppDelegate的模拟对象。 (我知道如何做到这一点)
3)以某种方式(handwaving这里)链接我的应用程序,以便AppDelegate的模拟实例链接而不是真实的。
4)运行测试。注意它失败,因为1)我还没有创建MyMenu。 2)我还没有创建MyItem。 3)我还没有完成IB工作来将MyItem连接到[AppDelegate doMyItem],或者4),因为我还没有编写'doMyItem'方法。
5)解决上述四个问题(如果我那天感觉真的很迂腐,一次一个)。
6)再次运行测试并观察成功。
这是否使问题清楚?
Patros嗨, 关于你的第二#1,我不太明白这句话的意思是生成用户输入一样“。你可以给我一个例子吗? 谢谢, 帕特 – 2009-06-22 21:01:31
它只是意味着产生你想看到的键盘和鼠标事件。您可以通过包装本机UI类并劫持它们的事件,可能通过访问API或编写自定义驱动程序来实现此目的。 – patros 2009-06-22 21:29:23