【问题标题】:Where does OCUnit store NSUserDefaults?OCUnit 在哪里存储 NSUserDefaults?
【发布时间】:2011-09-05 19:42:33
【问题描述】:

我看了问题Easy way to see saved NSUserDefaults?

我找到了应用程序的 .plist 文件,但测试包的文件在哪里?

【问题讨论】:

    标签: nsuserdefaults ocunit sentestingkit


    【解决方案1】:

    如果您使用 Xcode 4 与 OCUnit 的集成,它会将测试包注入到正在运行的应用程序中。因此 NSUserDefaults 保存在应用程序本身中。这对于单元测试来说是有问题的:当您手动运行应用程序时,您的默认设置可能已被您的测试覆盖。

    不要直接使用[NSUserDefaults standardUserDefaults],而是使用依赖注入,将用户默认值作为初始化参数传入。然后你可以传入一个你可以查询的测试替身。 (依赖注入的替代方法是从辅助方法返回 NSUserDefaults,覆盖该方法以在必要时返回测试替身。)

    【讨论】:

    • 你确定吗?我正在使用 XCode 4,但似乎对于 OCUnit,NSUserDefaults 没有存储到应用程序的 .plist 文件中,NSUserDefaults 通常存储在该文件中。实际上,我根本没有看到它们被存储。虽然,我可能会遗漏一些东西。
    【解决方案2】:

    在我的环境中(Xcode 4.2,在模拟器中运行测试)NSUserDefaults 写入以下文件:

    ~/Library/Application Support/iPhone Simulator/Library/Preferences/otest.plist`
    

    我猜您没有看到该文件是因为 NSUserDefaults 的缓存机制(在类参考中进行了解释),并且因为您的项目的单元测试运行时间不够长,以至于缓存时间间隔结束。

    otest.plist 保证会被写入,但是,如果在测试运行时调用 NSUserDefault 实例方法 synchronize

    【讨论】:

      【解决方案3】:

      OCUnit 似乎不会永久存储NSUserDefaults,而是存储在内存中。但是,我可能是错的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-20
        • 2011-08-14
        • 2023-04-03
        • 2018-04-29
        • 2010-11-02
        • 2016-10-22
        • 2021-07-30
        相关资源
        最近更新 更多