【问题标题】:How to write unit tests for the AppDelegate?如何为 AppDelegate 编写单元测试?
【发布时间】:2018-01-17 09:21:30
【问题描述】:

我在applicationDidFinishLaunchingWithOptions 内部的应用程序委托(主要用于CoreData)中进行了大量设置。并且很好奇我将如何在 appDelegate 中测试代码?谢谢

【问题讨论】:

    标签: swift unit-testing tdd appdelegate xctest


    【解决方案1】:

    第一步:在测试期间停止使用常规应用程序委托。这避免了“它会在启动时被调用”的问题,并且可能还会加快您的测试。见https://qualitycoding.org/ios-app-delegate-testing/

    第二步:既然在启动测试时不会调用常规应用程序委托,请直接从测试中调用其方法。

    【讨论】:

    • 既然UIApplication.shared.delegate 包含我们的测试版本,我们如何访问常规应用委托?
    • 我将创建测试版本作为常规应用程序委托的副本,因此您可以从所需的所有部分开始。然后修剪它们,以便您的测试可以控制返回值。我的书 pragprog.com/book/jrlegios/ios-unit-testing-by-example 的第 4 章重点介绍了应用委托。
    【解决方案2】:

    将功能移动到较小的函数或其他可以测试的类中。

    如果您将内容保存在 App Delegate 类中,您可以通过正常方式访问它们,因为单元测试链接到应用程序并且应用程序实际运行。但是你不能打电话给applicationDidFinishLaunchingWithOptions 并期望它起作用。它会在开始时被 iOS 调用,就像平常一样。

    【讨论】:

      猜你喜欢
      • 2012-01-06
      • 2019-03-17
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多