【发布时间】:2018-01-17 09:21:30
【问题描述】:
我在applicationDidFinishLaunchingWithOptions 内部的应用程序委托(主要用于CoreData)中进行了大量设置。并且很好奇我将如何在 appDelegate 中测试代码?谢谢
【问题讨论】:
标签: swift unit-testing tdd appdelegate xctest
我在applicationDidFinishLaunchingWithOptions 内部的应用程序委托(主要用于CoreData)中进行了大量设置。并且很好奇我将如何在 appDelegate 中测试代码?谢谢
【问题讨论】:
标签: swift unit-testing tdd appdelegate xctest
第一步:在测试期间停止使用常规应用程序委托。这避免了“它会在启动时被调用”的问题,并且可能还会加快您的测试。见https://qualitycoding.org/ios-app-delegate-testing/
第二步:既然在启动测试时不会调用常规应用程序委托,请直接从测试中调用其方法。
【讨论】:
UIApplication.shared.delegate 包含我们的测试版本,我们如何访问常规应用委托?
将功能移动到较小的函数或其他可以测试的类中。
如果您将内容保存在 App Delegate 类中,您可以通过正常方式访问它们,因为单元测试链接到应用程序并且应用程序实际运行。但是你不能打电话给applicationDidFinishLaunchingWithOptions 并期望它起作用。它会在开始时被 iOS 调用,就像平常一样。
【讨论】: