在iOS中使用I / O进行单元测试的方法

时间:2011-11-09 14:05:39

标签: iphone objective-c ios unit-testing io

在iOS中包含I / O操作的单元测试方法的最佳方法是什么?

例如,我正在考虑使用Objective-C categories来重新定义I / O方法的行为,例如imageNamed。但是,这可以防止黑盒单元测试,因为有必要知道在实现中使用了哪些I / O方法。

2 个答案:

答案 0 :(得分:1)

传入I / O操作的结果,以便可以提供测试数据来代替实际的I / O数据,或者使用OCMock。我已经将OCMock用于此目的。如果您正在考虑OCMock,请至少阅读所有可用方法的头文件。

如果使用旧版代码,请考虑阅读/学习Michael Feathers的书Working Effectively with Legacy Code

答案 1 :(得分:1)

替换第三方框架中的方法实现是一件非常冒险的事情,因为无法确定内部实现细节,因此您可能会在不知不觉中破坏依赖关系。它也非常脆弱 - 即使它今天正常工作,也可能在未来的框架版本中破坏某些东西。

任何数量的单元测试都无法保证您通过这种方式进行更改的有效性。如果你纯粹是为了实验而做这样的事情,我相信这可能很有趣,可能对学习有用,但你不会担心黑盒测试。

考虑是否可以通过添加与现有方法并行的方法来完成所需,而不是替换框架的方法实现。