我曾经使用 Android 单元测试来运行单元测试,但后来切换到使用 Robolectric 来运行 Java 单元测试。我注意到使用 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);
}
还有其他人注意到这个奇怪的现象或者可以解决它吗?
最佳答案
解析 xml 时,尝试将 SAXParserFactory 设置为命名空间感知。
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
在使用 Robolectric 运行单元测试时,添加此标志对我来说效果很好。
关于android - Robolectric:Android 中的 SAXParser 与 Java 中的 SAXParser (robolectric):localname 与 qname 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391698/