XCTest优于SenTestingKit有什么优势?

时间:2013-09-17 16:16:07

标签: ios unit-testing ios7 xcode5 sentestingkit

我想在iOS中进行单元测试。默认情况下,测试类是使用Xcode 5中的XCTest框架类创建的。我在早期版本的iOS中使用过SenTestingKit。这两个框架之间有什么区别? XCTest框架有哪些优点。我搜索相关文档,但我没有找到任何。我发现的只是套件中使用的接口类。任何人都可以向我指出相关资源。

3 个答案:

答案 0 :(得分:18)

Apple的文档在测试方面尤其缺乏。这是一种耻辱,因为用XCTest花了五分钟让我感到沮丧。所以,这里有一些你可能会觉得有用的文档。

首先,停止并观看有关测试的WWDC视频:https://developer.apple.com/wwdc/videos/?include=409#409(必须是注册开发人员)

然后,阅读Bots。它们是XCTest中真正的魔力。我目前正在建立一个运行Mavericks服务器的Mac Mini环境,该服务器连接到一小部分iPod Touch,iPhone和iPad,它们将同时运行我的单元测试并报告回来。它真是太神奇了。

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html#//apple_ref/doc/uid/TP40013292

所有这一切,我不太了解SenTest以便比较两者。但是我正在学习XCTest,所以这里有一些关于我到目前为止正在挖掘它的想法。

  • 它已经存在了。没有什么可下载的,您可以在制作要测试的对象的同时制作测试类对象。拉德。
  • 因为它与Xcode的集成非常深入,所以您可以在排水沟中看到测试覆盖率。您还可以使用Companion View从源查看测试器,或从测试器方法查看源。此外,它将永远是最新的 - 没有等待修复与Xcode的集成,因为苹果“打破”了一些东西。
  • 持续整合。机器人只是神奇的,它们很容易。你也得到Git托管,这是一个小的边缘特权,但如果你更喜欢你的Git内部托管但不想支付GitHub Enterprise更多。

还有一些衡量标准:

  • 缺乏文档。要求我阅读断言列表的标题是一个很好的举动。我毫不怀疑Apple很快会解决这个问题,但不会很快。
  • 你更深入地与Xcode联系在一起。并不是真正的开发,但脚本XCTest并不像其他选项那样优雅。
  • 持续集成需要OS X Server。如果你真的想要,它可以在同一台机器上,但即使你拥有Mountain Lion Server,也可以购买20美元。我对这个(ha)一点都不苦。

我的两分钱。希望能帮助到你。我真的建议观看我链接的视频 - 他们会进行实时测试创建,并为一般的单元测试制作一个非常引人注目的案例,无论你是否使用XCTest。

答案 1 :(得分:2)

XCTest默认包含在ios7中,并且与新的持续集成功能更好地集成 https://developer.apple.com/technologies/tools/

答案 2 :(得分:2)

目前似乎优势很少,但希望随着时间的推移而改变,所以启动社区维基来记录一些:

  • XCTAssert…系列宏可以完全忽略format参数(用于评论测试应该通过的原因)。这对于在编辑器中保持简单测试(从测试本身显而易见的是它在做什么)清理是很方便的。 STAssert…要求我们制作format参数nil或其他一些参数。
  • 有一个通用的XCTAssert()宏,感觉比把某些类型的支票放入STAssertTrue更整洁。