android - Robolectric:Android 中的 SAXParser 与 Java 中的 SAXParser (robolectric):localname 与 qname 的差异

标签 android unit-testing robolectric android-parser

我曾经使用 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/

相关文章:

node.js - Expresso 中的 -I 或 "unshift a path mean"是什么意思?

javascript - 意外的 token - 现有 React + Web-pack 应用程序的 Jest

android - Robolectric:测试在应用程序运行时启动哪个 Activity

android - 尽管 wrap_content GridView 填充父级

android - 在 SDK 工具中启动 Android 模拟器,修订版 12

java - 如何获取 Android 设备的经纬度?

android - WebView 未加载网页

c# - 单元测试中的序列化异常

java - 错误 : java. lang.UnsatisfiedLinkError with roboelectric and realm

android - 使用 Robolectric 和 Mockito 模拟 PackageManager