你如何测试你的Cocoa GUI?

时间:2009-02-13 12:41:47

标签: cocoa testing gui-testing

我想为我的Cocoa程序的GUI编写一些测试。

Cocoa应用程序是否有任何良好的GUI测试框架?我找到的唯一的东西是Squish,其价格为2.400欧元,远远超出我的预算......

有什么想法吗? 如何测试你的Cocoa GUI?

5 个答案:

答案 0 :(得分:8)

这取决于“测试Cocoa GUI”的含义。

如果你想要MPW附带的旧Virtual User工具之类的工具,那么这些工具就很少了。远远的;你会看到像Squish和Eggplant这样的工具。

如果您想为应用程序的人机界面编写单元测试,我建议您遵循“trust, but verify”方法,只要您信任您正在建立正确的连接(根据您的框架),您的用户可以与您的框架正确交互。这意味着您可以通过验证模型完成大部分测试,并且控制器代码可以正确连接到您的视图。

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

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

几乎从不做的是编写代码来“模拟事件”。我最接近的就是构建一个假拖动信息对象并将其传递给大纲视图数据源,以确保它能正确处理拖动。

答案 1 :(得分:4)

我建议你看一下Google的Toolbox for Macintosh。除了其他一些好东西之外,它还为NSView和CALayers添加了一组非常好的状态和渲染测试。在单元测试中,断言视图/图层状态或渲染图像与保存的(按名称)模板匹配。如果测试包中不存在模板或与保存的版本不匹配,则会生成新的编码状态或呈现的TIFF以供查看。 GTM为NSView和CALayer提供了进行状态编码和渲染的类别。显然,您可以在自己的NSView或CALayer子类上覆盖这些类别,以编码相关状态(使用NSCoder协议)或渲染。

它还允许您(轻松地)以编程方式发送键事件并使用单元测试运行运行循环,并且它支持OS X和iPhone上的单元测试。

答案 2 :(得分:2)

我创建了一个开源Python包,它使用Apple Accessibility API创建了一个经典的GUI自动化库,让您可以看到Cocoa GUI并与之交互。 PyATOM home page

答案 3 :(得分:1)

您可以在http://www.testplant.com/查看并考虑TestPlant(正式名称为Redstone Software)的茄子。

Here是去年苹果推出的一篇文章。

答案 4 :(得分:0)

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

了解更多信息