涉及NSDocumentDirectory和其他iOS App特定调用的静态库的单元测试

时间:2011-01-04 18:35:13

标签: iphone unit-testing static-libraries ios-4.2

我正在尝试为试图在文档目录中创建/写入/读取文件的静态库运行单元测试。由于这是一个静态库,而不是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应用程序特定调用的测试的静态库的这一缺点?

提前致谢。

4 个答案:

答案 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框架可以在模拟器或设备上运行单元测试。这不仅可以解决您的问题,还可以调试您的应用程序(我从其他单元测试框架中遗漏的东西)。

Download gh-unit

How to install gh-unit

相关问题