2009-02-13 75 views
9

我想为我的Cocoa程序的GUI编写一些测试。你如何测试你的Cocoa GUI?

Cocoa应用程序是否有很好的GUI测试框架?我发现的唯一的东西是Squish,它在2.400€远远超出我的预算...

任何想法?如何测试你的Cocoa GUI?

回答

8

找到更多,这取决于你的意思是“测试Cocoa GUIs”。

如果你想要像MPW中包含的旧Virtual User工具那样的工具,那么它们之间的距离很少,只有&;你会看到像Squish和茄子这样的工具。

如果你想写单位为你的应用程序的人机界面测试,我建议你遵循“”的方法,你信任,只要你做了一个正确的连接(根据你的架构)您的用户可以与您的框架进行正确的交互。这意味着您可以通过验证来完成大部分测试,您的模型和控制器代码已正确连接到您的视图。

在我的博客上,我写了几个关于如何用Cocoa做的例子,一个用于testing user interfaces built with target-action,另一个用于testing user interfaces built with Cocoa bindings。 (当然,请记住,这两种技术并不是唯一的:如果你想在通过Cocoa绑定管理的表视图中拖放&,你还可以有一个数据源,并且可能通过目标操作连接一个委托)

我不写单元测试的东西 - 通常是 - 在他们的超级视图中控件的位置或类型。然而,有时候这对于获得并保持正确非常重要。在这种情况下,我可以查询控件的适当属性并使用标准断言来验证它们。

什么我几乎从来没有做是写代码“模拟事件。“我所见过到最接近的是构建一个假的阻力信息对象,并传递一个到大纲视图的数据源,以确保它会处理正确拖累。

1

您可能会检查并考虑TestPlant的Eggplant(正式Redstone软件)http://www.testplant.com/

Here是去年苹果公司推荐的一篇文章。

4

我建议你看看谷歌的Toolbox for Macintosh。它还有其他一些好的功能,为NSView和CALayers提供了一套非常好的状态和渲染测试补充。在你的单元测试中,你断言视图/图层状态或渲染图像与保存的(按名称)模板匹配。如果模板不存在于测试包中或与保存的版本不匹配,则会生成新的编码状态或呈现的TIFF以供审阅。 GTM为NSView和CALayer提供了用于进行状态编码和渲染的类别。很明显,你可以在你自己的NSView或CALayer子类上重写这些类别来编码相关状态(使用NSCoder协议)或渲染。

它还允许您以编程方式发送按键事件并通过单元测试运行运行循环,并支持在OS X和iPhone上进行单元测试。

+0

Barry,或许你应该参考你在Core Plot的UI测试框架中的工作作为例子。 – 2009-02-14 04:50:21

0

最新的CocoaCast播客采访了Ian Dees,“用Ruby进行脚本GUI测试”的作者。你可以在CocoaCast

2

我创建了一个使用苹果的一个开放源码的Python包可访问性API以创建一个经典的GUI自动化库,让您可视化并与Cocoa GUI进行交互。PyATOM home page