【发布时间】:2012-03-08 16:45:35
【问题描述】:
我已经实现了 NSXMLParserDelegate 协议,并且似乎正在使用 NSXMLParser 成功解析 XML。我正在解析的 XML 的 XSD 相当多地涉及 100 个左右的标签和属性,这些标签和属性有时会嵌套得相当深。我正在从 XML 文档中的数据填充对象层次结构,到目前为止一切似乎都很顺利。
我的问题是,我如何有效地测试这个?我的委托中有很多“if/else if”逻辑以及 BOOL 标志来跟踪我在正在解析的文档中的位置。在编写委托时,我很容易引入印刷错误。
我最初的想法是创建一个使用 XSD 中指定的所有元素和属性的测试输入文档。解析完成后,我可以“NSLog()”插入到对象层次结构中的所有内容,但这似乎太费力了。
有没有更好的方法来思考这个问题,还是我应该卷起袖子来蛮力解决?
【问题讨论】:
-
上周我将委托重构为数据类型类的层次结构,其中父/子关系表示 xsd 中的元素关系。不再有 BOOL 或 if/else-if 逻辑树。我现在可以根据 xsd 将这些类表示的数据类型连接在一起。我还在类实现的协议中添加了一个 printContents 方法。 printContents 方法将存储在对象中的数据作为适当的 XML 输出,然后调用其子对象来执行相同的操作。我能够将输出用作输入,并且经过一些修复后,两者都匹配了。
标签: objective-c ios xml ipad unit-testing