如何为Mac(Cocoa)应用程序创建端到端测试?

Ada*_*dam 15 testing macos xcode cocoa objective-c

我一直在阅读很多关于测试驱动开发的内容,并决定我想在一个小项目上试一试.作为参考,我目前正在阅读"以测试为导向的面向对象的软件".

我理解如何对我的应用程序进行单元测试以及如何对UI的某些部分进行单元测试,但我正在努力设置端到端测试.例如,测试通过我的整个应用程序的某个路径产生正确的输出(这是我对端到端测试的基本理解).

没有必要模拟点击事件,但有必要与UI建立某种连接.

我是正确的思维,我需要"逻辑"的测试组合(测试,而无需启动应用程序),"应用程序"测试(与启动应用程序测试)和类似GHUnit异步功能来做到这一点?

编辑:

在阅读了下面的一些答案后,听起来我正在寻找功能性的端到端测试,但我想我应该举一个测试的例子,就像我想象的那样.

  1. 启动应用程序.
  2. 使用测试用户凭据调用登录功能.(注意:不一定需要UI自动化).
  3. 验证窗口上的标签是否为"登录...".
  4. 成功验证用户后,验证标签现在显示"欢迎,亚当!".

KIF听起来像它可以工作,因为它有检查UI元素的变化的步骤,看起来也有一个Mac OSX分支.我敢肯定我还可以编写一个小类,它会不断地在UI中调查我期望的更改并在一段时间后超时,但我想知道这是否是正确的方法.

但是,也许我正在尝试将我正在阅读的"面向对象的软件增长,以测试为导向"并尝试将其应用于Cocoa.

另一个更新:

所以到目前为止我一直在阅读这些建议,检查链接到的各个地方,并开始实现某些内容,同时仍然参考了这本书.我认为我真正想要的是Test- Driven -Development部分.在这本书中最突出的是,他们首先通过验收测试从用户角度描述了他们想要发生的事情.

我意识到,一旦开始编写方法,就必须进行可靠的单元测试,但我很想首先使用一些UI来编写一些高级验收测试.我已经开始编写自己的应用程序"驱动程序"类,使用一些类似于GHAsyncTestCase想法的方法来帮助我实现这一目标.这听起来是否正确/有用/必要?

到目前为止,我非常感谢所有的评论,他们肯定帮助我在自己的脑海中解决了我正在尝试做的事情以及各种测试领域.我很快就会完成这个问题,因为它变得越来越大,所以欢迎任何最终的建议!

cra*_*igb 3

我认为我从“发展面向对象的软件”中得到的关键是尽可能地与 UI 解耦。如果没有代码可看,就很难给出建议,但通过您的修订,我认为将“验证标签说..”位与 UI 分开。是什么设置了此消息?您可以测试该事件吗?

您与 UI 的解耦程度越高,您就越能进行单元测试(更快、更容易),而不是集成 UI 元素的其他框架或驱动程序。