2012-03-08 33 views
0

我已经实现了NSXMLParserDelegate协议,并且似乎成功地使用NSXMLParser解析了XML。我正在解析的XML的XSD与100个左右的标签和属性相当相关,它们有时可以相当深地嵌套。我正在从XML文档中的数据中填充对象层次结构,并且目前为止似乎都很顺利。测试NSXMLParserDelegate类

我的问题是,我如何有效地测试这个?在我的委托中有很多“if/else if”逻辑,以及BOOL标志可以跟踪我在解析文档中的位置。在写代理时,我可以很容易地引入印刷错误。

我最初的倾向是创建一个使用XSD中指定的所有元素和属性的测试输入文档。一旦它被解析,我就可以“NSLog()”插入到对象层次结构中的所有东西,但这似乎太劳力密集了。

有没有更好的方法来思考这个问题,还是我只是卷起袖子蛮横逼迫它呢?

+0

我花了最后一周将我的委托重构为具有表示xsd中元素关系的父/子关系的数据类型类层次结构。不再有BOOL或if/else - 如果逻辑树。现在我可以将这些类表示的数据类型基于xsd连接在一起。我还为类实现的协议添加了printContents方法。 printContents方法将存储在对象中的数据输出为适当的XML,然后调用其子对象来执行相同操作。我能够使用输出作为输入,并在一些修复后,得到两者匹配。 – 2012-03-16 06:52:33

回答

0

你会想看看在这里使用单元测试。如果您可以生成一个(或多个)会导致已知数据结构的文件,那么可以在单元测试中解析它们,并验证数据结构是您期望的数据结构。

我们这样做了很多,我们的管理既分析和生成XML文件类型(和乐趣,我们连上发电机的另一个单元测试输出到分析器)。

有从苹果建立Unit Tests很多很好的背景资料,以及大量的开源项目都使用单元测试也是如此。

有了这样的计划,你写出来的比较器(或使用isEqual:方法是否适合你的对象层次结构),然后您可以重复使用,对你的每个测试。添加几个XML文件并在单元测试中手动创建匹配的对象层次结构,并且您都准备好了。