我有一个遗留的java代码和一些sax解析。我想为那些sax解析器编写单元测试。
sax解析器的实现很简单。它就像一个扩展DefaultHandler
的类,并覆盖了startElement
和endElement
等方法。
Sax解析器提供了一个很大的对象树,因为它们解析的xml很大。
当我尝试为sax解析器编写单元测试时,我得到了大的测试方法:
正如我已经说过,XML非常庞大。因此,当我比较结果对象时,得到很多断言。
请给我一些建议。我不想为我的遗留代码所具有的每个sax解析器编写如此大的测试方法。
答案 0 :(得分:0)
也试一试。
public void testMySaxParser()抛出异常{
InputStream xml = getTestDocument();
//创建一个记录事件并验证它们的自定义处理程序 //违背预期的事件顺序
MyRecordingHandler handler = new MyRecordingHandler();
//告诉处理程序你要生成
的序列 //您希望以后由真正的SAXParser重复的事件 handler.startRecording();
handler.startDocument();
handler.startElement(“”,“”,“root”,new Attributes());
handler.startElement(“”,“”,“child”,new Attributes());
handler.characters(“Some text”.toCharArray(),0,9);
handler.endElement(“”,“”,“child”);
handler.startElement(“”,“”,“child”,new Attributes());
handler.characters(“更多文本”.toCharArray(),0,14);
handler.endElement(“”,“”,“child”);
handler.endElement();
handler.endDocument();
//告诉处理程序“期望记录”已完成 //它应该进入“播放”模式
handler.stopRecording();
//运用解析器为处理程序生成实际事件
getSAXParser()。parse(xml,handler);
//要求处理程序对象验证预期的事件发生了 handler.verify(); }