9

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

Cocoa 应用程序有什么好的 GUI 测试框架吗?我发现的唯一东西是Squish,2.400 欧元,远远超出了我的预算……</p>

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

4

5 回答 5

8

这取决于您所说的“测试 Cocoa GUI”是什么意思。

如果您想要 MPW 中包含的旧虚拟用户工具之类的工具,那么这些工具很少见;您将看到像 Squish 和 Eggplant 这样的工具。

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

在我的博客上,我写了几个例子来说明如何专门用 Cocoa 来做这件事,一个用于测试用 target-action 构建的用户界面,一个用于测试用 Cocoa 绑定构建的用户界面。(当然,请记住,这两种技术并不是独占的:如果您想在通过 Cocoa 绑定管理的表视图中进行拖放操作,您还需要一个数据源,并且可能还有一个通过 target-action 连接的委托.)

我不写单元测试的东西——通常——是它们的超级视图中控件的定位或类型。但是,有时这对于获取和保持正确很重要;在这种情况下,我可以只查询控件的适当属性并使用标准断言验证它们。

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

于 2009-06-01T05:40:44.777 回答
4

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

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

于 2009-02-13T20:28:46.270 回答
2

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

于 2011-05-10T16:52:32.950 回答
1

您可以在http://www.testplant.com/上查看并考虑 TestPlant(以前称为 Redstone Software)的 Eggplant 。

是苹果去年在他们身上发表的一篇文章。

于 2009-02-13T15:00:25.640 回答
0

最新的 CocoaCast 播客采访了“Scripted GUI Testing with Ruby”一书的作者 Ian Dees。您可以在CocoaCast了解更多信息

于 2009-02-14T00:07:26.743 回答