【发布时间】:2023-04-09 03:15:02
【问题描述】:
简短的问题是:如何让 iPhone (objective-c) 文件操作在命令行单元测试中正常工作?
带解释的长问题:这最终将成为一个脚本,通过 Hudson 实例为我的 iPhone 构建执行自动构建/测试。在this SO question 上关注 makdad 的链接后,我可以成功地从命令行(半)运行单元测试。
但是,我的一项测试失败了。测试将调用缓存服务类来保存文件,然后尝试检索它。但是,从命令行运行测试时,文件 I/O 似乎不起作用:(。
作为参考,通过 Xcode GUI 运行单元测试不会导致此类错误。
我正在使用 NSFileHandle 方法调用来获取写入句柄。如果它们返回 nil,则使用
创建文件[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
我认为这可能与模拟器缓存目录路径中的空格有关。我在正确的轨道上吗?如果是这样,我将如何纠正这个问题?
另请注意,模拟器需要未运行才能使其工作,模拟器以编程方式启动并且不显示 GUI。如果它正在运行,则命令行构建失败。
【问题讨论】:
-
文件创建了吗?它会抛出错误吗?一般来说,空格在 NSString 中不应该是一个问题,因为没有其他处理它,它们将按字面意思理解。从命令行运行测试时我们必须小心的一件事是任何由 Xcode 设置的环境变量,但不是由我们的脚本设置的。
-
不幸的是,我已经有一段时间没有机会研究这个了,我已经转移到另一个项目,我不记得文件是否正在创建。但是你是对的,我可能需要设置一个环境变量给模拟器一些磁盘空间用作“内部存储器”。如果我有机会我会测试一下
-
缺少任何中间目录?
标签: iphone objective-c unit-testing file-io integration-testing