gpt4 book ai didi

ios - 防止应用程序在运行单元测试时创建 View Controller

转载 作者:可可西里 更新时间:2023-11-01 03:27:50 24 4
gpt4 key购买 nike

当我使用 OCUnit 测试我的应用程序时,它会像往常一样在运行测试之前设置 AppDelegate、窗口和 rootViewController。我的 rootViewController 然后将自己添加为一些 NSNotifications 的观察者。

当我使用隔离的测试实例和模拟观察者测试这些通知时,自动创建的 rootViewController 的通知处理程序也会被调用,这会导致我的一些测试失败。

有没有办法阻止 OCUnit 创建 rootViewController 或让它在测试模式下运行时使用不同的 ViewController 类?如果无需在我的应用代码中编写与测试相关的特殊代码就可以做到这一点,那就太好了。

最佳答案

更新:我今天所做的与下面的答案略有不同。参见 How to Easily Switch Your App Delegate for Testing

它确实需要在您的应用代码中添加一些特定于测试的代码。以下是我为避免整个启动顺序所做的工作:

编辑方案

  • 选择测试操作
  • 在“测试”中选择“参数”选项卡
  • 禁用“使用运行操作的选项”
  • 添加环境变量,将runningTests设置为YES

编辑您的应用委托(delegate)

  • 尽快将以下内容添加到 -application:didFinishLaunchingWithOptions: 中:

    #if DEBUG
    if (getenv("runningTests"))
    return YES;
    #endif
  • -applicationDidBecomeActive: 执行相同的操作,但只需return

关于ios - 防止应用程序在运行单元测试时创建 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com