如何为XCTestCase重置UserDefaults?

时间:2016-09-28 03:53:51

标签: ios xcode nsuserdefaults swift3 xctest

我努力做好并为我的课程编写单元测试,但我有一些课程处理首选项并检查首次运行。我写的测试函数在他们第一次运行时工作正常,但随后的测试失败,因为首选项已经有了值。将对象设置为nil会导致Optional<Any>值在使用nil获取时不等于UserDefaults.standard.object(forKey:)

我还尝试了UserDefaults.standard.removeObject(forKey:)UserDefaults.standard.synchronize()以及UserDefaults.resetStandardUserDefaults()。似乎没有任何效果,Bundle.main.bundleIdentifier值为nil,这意味着我也无法使用UserDefaults.standard.removePersistentDomain(forName:)

我发现偏好设置已保存在:/Users/<name>/Library/Developer/CoreSimulator/Devices/<UUID>/data/Library/Preferences/xctest.plist中,并且我已尝试使用"xctest"中的字符串removePersistentDomain,但这也无效。

可以将值设置为其他值并检查,但我真的很讨厌将我的代码丢失以测试XCTest中只存在的情况(我已经有了一个函数)因为XCTest案例中的UserDefaults与代码中的UserDefaults不同,所以专门用于执行此重置!)因此,我怎样才能重置XCTestCase中的标准UserDefaults

0 个答案:

没有答案