OCUnit在哪里存储NSUserDefaults?

时间:2011-05-31 21:10:05

标签: nsuserdefaults ocunit sentestingkit

我读了Easy way to see saved NSUserDefaults?

这个问题

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

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

我猜你没有看到该文件,因为NSUserDefaults的缓存机制(在类引用中有解释),并且因为你的项目的单元测试运行时间不够长,无法经过缓存时间间隔。

但是,如果某些内容在测试运行时调用otest.plist实例方法NSUserDefault,则保证写入{p> synchronize

答案 2 :(得分:1)

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