【问题标题】:What are the advantages of XCTest over SenTestingKit?XCTest 与 SenTestingKit 相比有哪些优势?
【发布时间】:2013-09-22 04:29:13
【问题描述】:

我想在 iOS 中进行单元测试。默认情况下,测试类是使用 Xcode 5 中的 XCTest 框架类创建的。我在早期版本的 iOS 中使用过 SenTestingKit。这两个框架有什么区别? XCTest 框架有什么优势。我搜索了相关文档,但没有找到。我唯一发现的是在套件中使用的接口类。谁能指点我相关的资源。

【问题讨论】:

    标签: ios unit-testing ios7 xcode5 sentestingkit


    【解决方案1】:

    Apple 的文档在测试方面明显缺乏。很遗憾,因为在 XCTest 上花五分钟让我爱不释手。因此,这里有一些您可能会觉得有用的文档。

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

    然后,阅读有关 Bot 的信息。它们是 XCTest 中真正的魔力。我目前正在设置一个运行 Mavericks Server 的 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 的集成,因为 Apple “破坏”了某些东西。
    • 持续集成。机器人很神奇,而且很简单。您还可以获得 Git 托管,这是一个小的附加福利,但如果您更喜欢内部托管 Git 但不想为 GitHub Enterprise 付费,则更是如此。

    还有一些缺点:

    • 缺乏文档。让我阅读标题以获取断言列表是一个大胆的举动。我毫不怀疑苹果会很快解决这个问题,但还不够快。
    • 您与 Xcode 的联系更深一些。对开发来说并不是一个真正的骗局,但是编写 XCTest 脚本并不像其他选项那样优雅。
    • 持续集成需要 OS X 服务器。如果您真的需要,它可以在同一台机器上,但即使您拥有 Mountain Lion Server,也需要 20 美元才能购买。我对此一点也不苦(哈)。

    我的两分钱。希望能帮助到你。我真的建议观看我链接到的那个视频——不管你是否使用 XCTest,他们都会进行实时测试创建,并为一般的单元测试提供了一个非常有说服力的案例。

    【讨论】:

    • 这些好处是 XCTest 专门提供的,还是只是 Xcode 5 普遍改进的测试功能的一部分?您提到的许多(全部?)内容也适用于带有 Xcode 5 的 SenTestingKit。
    • 正如我所提到的,我对 SenTestingKit 不熟悉,所以我无法谈论差异。 CI 的东西对于 Xcode 5 来说是新的,但它的其余部分是 OCUnit 的扩展,它是在 5 之前由 Xcode 提供的。我对 OCUnit 也没有做太多,所以恐怕我在再次失去差异。
    • 我知道我无法使用 SenTestingKit 对我的测试代码进行断点。使用 XCTest 我可以断点
    • 409视频不是测试,而是调试。
    【解决方案2】:

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

    【讨论】:

    • 是的.. 信息不够。
    【解决方案3】:

    目前看来优势很少,但希望随着时间的推移而改变,所以开始一个社区 wiki 来记录一些:

    • XCTAssert… 系列宏可以处理您完全省略 format 参数(用于注释为什么测试应该通过)。这对于在编辑器中保持简单测试(从测试本身很明显)保持清洁非常方便。 STAssert… 要求我们使用 format 参数 nil 或类似的参数。
    • 有一个通用的XCTAssert() 宏,感觉比将某些类型的检查绑定到STAssertTrue 更简洁。

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 1970-01-01
      • 2016-01-04
      • 2011-08-02
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2021-05-28
      相关资源
      最近更新 更多