我在Linux上有一个Python和C应用程序,可以从磁盘读取文件时正确处理IO错误。该应用程序的大部分使用Python编写,带有C扩展来执行IO。在此扩展中,可以检测到IO错误。
在两种情况下,这些错误似乎对我来说会发生。
stat
)显示的文件大于使用读取的文件fread
。我可以轻松地测试和处理1号案件。但是,我也想为情况2编写单元测试。但是,我不知道如何为测试触发“假” IO错误。这有可能吗?有没有更好的方法来测试这种错误?
据我了解,TDD的经典警告我们不要编写用于第三方接口(包括标准库)的模拟/存根,例如,请参见此处。主要问题是应用程序代码和通用第三方库之间通常存在差距,很难与模拟对象联系在一起。而且,这会阻止您使用测试来得出设计问题。
(即使在您的情况下C库并非完全是第三方,单元测试也意味着您要单独测试实体)。
其想法是,您改为编写一个适配器类,该类封装所有低级逻辑并公开接近您的应用程序所需接口的接口(例如,引发更有意义的异常,如FileIsTooBig
)。然后,根据您的域编写模拟对象。至于测试适配器本身,它只经过了一些简单的系统测试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句