我正在尝试为试图在文档目录中创建/写入/读取文件的静态库运行单元测试。由于这是一个静态库,而不是iOS的应用程序,尝试引用NSDocumentDirectory返回表单的目录
“/ Users // Library / Application Support / iPhone Simulator / Documents”
此目录不存在。尝试从实际应用程序访问目录时,NSDocumentDirectory返回以下形式的内容:
“/ Users // Library / Application Support / iPhone Simulator / 4.2 / FEDBEF5F-1326-4383-A087-CDA1B865E61A / Documents”
(请注意模拟器版本以及作为路径一部分的应用程序ID)
如何在单元测试框架中克服实现需要iOS应用程序特定调用的测试的静态库的这一缺点?
提前致谢。
答案 0 :(得分:3)
我为自己解决了这个问题。在我的单元测试设置阶段,我创建了Document目录(如果它不存在)并在测试完成后将其删除。这有效地让我超越了阻塞并继续我的逻辑测试,而不必担心iOS app特性。
答案 1 :(得分:3)
您还可以通过模拟文件访问来解决此问题,以便测试验证您的代码是否尝试将预期数据写入NSDocumentsDirectory给出的路径,而不会实际访问文件系统。
答案 2 :(得分:2)
仅defining a TEST
preprocessor macro使用NSLibraryDirectory
代替NSDocumentDirectory
进行测试。
然后,使用以下内容删除tearDown
中的文件
[[[NSFileManager alloc] init] removeItemAtURL:fileURL error:NULL]
答案 3 :(得分:0)
gh-unit框架可以在模拟器或设备上运行单元测试。这不仅可以解决您的问题,还可以调试您的应用程序(我从其他单元测试框架中遗漏的东西)。