如何彻底测试使用Swift创建的iOS应用程序?

时间:2015-09-18 17:57:49

标签: ios swift testing tdd bdd

属于网络开发的世界,我习惯于强大的测试技术和工具,如Chai,Sinon,Mocha,Jasmine,仅举几例,以及广泛支持和社区,精心编写的书籍,深入见解。我能想象的所有可能情况都包含在现有工具中。

现在,用Swift学习iOS开发,我想知道,我如何使用存根和模拟彻底测试我的应用程序的方法,模仿异步连接到Web服务并确保测试可以以清晰的方式编写,创造和平为我衰老的身体着想。

我发现社区在iOS开发方面并不是那么广泛,特别是Swift,因为语言不长在这个领域。

请分享可以帮助我创建可靠的可预测行为应用程序的最佳测试实践。

1 个答案:

答案 0 :(得分:0)

开发iOS应用时,您可以使用两种可能的测试类型,一种用于单元测试,另一种用于验收测试。这些在Xcode中分别称为“测试目标”和“UI测试目标”。

在测试目标中,您可以使用@testable import MyAppName导入其Swift模块来测试所有应用程序代码,然后使用Apple提供的框架XCTest编写单元测试。

在Apple提供的工具之上,FOSS社区开发了其他优秀的测试库。特别是Quick是一个测试框架,它提供类似于Mocha的语法。

当谈到UI测试目标时,有一件重要的事情要说:你只能通过这些来测试你的应用程序行为。无法访问应用程序代码,所有操作都通过模拟用户与UI交互的代理完成。也就是说,在我看来,这是有充分理由的。应该通过仅允许UI交互的工具编写的测试类型应该是接受/功能测试,这应该只验证应用程序的行为。无法访问代码是避免滥用此工具的好方法。

  

我想知道,我如何使用存根和模拟彻底测试我的应用程序的方法,模仿异步连接到Web服务并确保测试可以以清晰的方式编写,为我衰老的身体创造安心。

更进一步:

  

使用存根和模拟

由于Swift的性质,真正的嘲弄是相当困难的。最好使用假货和双打。网上还有很多关于为什么使用模拟和存根很少是个好主意的文献,例如thisthisthisthis

  

模仿异步连接到Web服务

在说完所有这些之后,有时候短信很有用,例如你强调的情况。一个好的库是OHHTTPStubs

  

让自己确保测试能够以清晰的方式编写

我相信今天有足够的工具可以用很少的努力来支持编写清晰有效的测试。其余部分取决于您,您的团队以及您构建应用程序的方式。毕竟,对于任何其他编程语言都是如此:D

如果我能在这里放一个无耻的插件,那年年初我写了a post covering the state of testing in the iOS plaform,从那以后发生了很多新的事情,但如果你想挖掘它可能是一个很好的起点更深。