如何为AppDelegate编写单元测试?

9

我在applicationDidFinishLaunchingWithOptions方法中做了很多设置(主要是为了CoreData)。我想知道如何测试appDelegate中的代码?谢谢。

2个回答

7
步骤一:在测试期间停止使用常规应用程序委托。这可以避免“它将在启动时被调用”的问题,并且很可能也会加快您的测试速度。请参见https://qualitycoding.org/ios-app-delegate-testing/ 步骤二:现在,在测试启动时不会调用您的常规应用程序委托,直接从测试中调用其方法。

现在UIApplication.shared.delegate包含我们的测试版本,我们如何访问常规的应用程序委托? - Declan McKenna
1
我会将测试版本创建为常规应用程序委托的副本,这样您就可以拥有所需的所有部件。然后,缩减它们,以便您的测试可以控制返回值。我的书第4章 https://pragprog.com/book/jrlegios/ios-unit-testing-by-example 着重于应用程序委托。 - Jon Reid

4

将功能移入更小的函数或其他类中,以便进行测试。

如果您将功能保留在App Delegate类中,您可以按照正常方式访问它们,因为单元测试与应用程序链接,并且实际运行应用程序。但是您不能调用applicationDidFinishLaunchingWithOptions并期望它起作用。它将像通常一样由iOS在启动时调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接