如何模拟原始 XML 输出以用于 Java 中的测试 class?

How to mock original XML output to use in test class in Java?

我正在为应用程序编写 Junit 测试用例,我必须一次又一次地构建虚拟 Document object 并根据我的原始响应设置根元素和所有其他元素,以便传入我的 Mockito.when(m1()).thenReturn(respDoc).代码是这样的

Code Starts

Document respDoc = new Document();
Element elem = new Element("RootElement");
respDoc.setRootElement(elem);
Element node1 = new Element("Nodes").addContent("FirstNode");
elem.add(node1);
 **And So On...**

Code Ends

有时响应 xml 太大以至于我花费了所有时间来创建这个 Document 对象。有什么方法可以让我通过整个 XML 并且它给了我想要的输出。

如果有任何困惑,请告诉我。 提前致谢!

假设 Document 来自 JDOM 库:

您需要以下依赖项:

<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom2</artifactId>
    <version>2.0.6.1</version>
</dependency>

然后你解析它:

  import org.jdom2.Document;
  import org.jdom2.input.SAXBuilder;


  String FILENAME = "src/main/resources/staff.xml";

  SAXBuilder sax = new SAXBuilder();

  Document doc = sax.build(new File(FILENAME));

  Mockito.when(m1()).thenReturn(doc);

参考:https://mkyong.com/java/how-to-read-xml-file-in-java-jdom-example/


好吧,文档说明您可以使用 InputStream:

http://www.jdom.org/docs/apidocs/org/jdom2/input/SAXBuilder.html 示例:

String yourXmlString = "<xml>";

InputStream stringStream = new ByteArrayInputStream(yourXmlString .getBytes("UTF-8"));

SAXBuilder sax = new SAXBuilder();
 
Document doc = sax.build(stringStream );