Robolectric:Android中的SAXParser与Java中的SAXParser(robolectric):localname与qname的区别

时间:2013-01-18 02:51:04

标签: android unit-testing robolectric android-parser

我曾经使用Android Unit Test运行我的单元测试,但是使用Robolectric切换到Java Unit Test。我注意到使用SaxParser DefaultHandler有所不同。基本上,Android sax解析器会填充“localName”,但是当使用Java VM在Robolectric下运行时,localName为空,qname似乎包含我应该使用的值。

以下是我推荐的方法:

  

import org.xml.sax.helpers.DefaultHandler;

public abstract class BaseParser extends DefaultHandler
{   
    @Override
    public abstract void startElement(String uri, String localName, String qName, Attributes attributes);
}

其他人是否注意到这种奇怪的现象或者可以修复它?

1 个答案:

答案 0 :(得分:2)

解析xml时,请尝试将SAXParserFactory设置为可识别名称空间。

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);

在使用Robolectric运行单元测试时,添加此标志对我来说效果很好。