gpt4 book ai didi

c# - 如何对xml文件进行单元测试?

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:29 32 4
gpt4 key购买 nike

我已经为以下 xml 文件创建了一个 XSD 架构

<?xml version="1.0"?>
<note>
<to> </to>
<from> </from>
<datetime> </datetime>
<heading> </heading>
<body> </body>
</note>

我实现了一个 NoteGnerator 来根据模式生成 xml 文件。必须针对某些模板/规范生成 xml 文件,例如:

<?xml version="1.0"?>
<note>
<to> Lucy </to>
<from> Lily </from>
<datetime> --date--time-- </datetime>
<heading> reminder </heading>
<body> do not forget my pen </body>
</note>

另一个模板/规范是这样的:

<?xml version="1.0"?>
<note>
<to> Lily </to>
<from> Lucy </from>
<datetime> --date--time-- </datetime>
<heading> reply </heading>
<body> no problem </body>
</note>

,其中 <datetime>是生成xml时的动态值(所以这个值不能预先确定)。基于 XSD 方案和这两个 XML 规范,我可以轻松生成 XML 消息。

如何对生成的 XML 文件进行单元测试?

我是否需要再次验证生成的 XML 文件的架构?或者我需要使用一些 diff 工具来比较生成的 xml 文件和模板?因为datetime是动态的,每次生成xml文件的时候都不一样,那么怎么和模板进行比较呢?或者我需要将 xml 反序列化为 c# 对象,然后测试 c# 对象?

最佳答案

这可能对您有所帮助。在这里,我创建了一个对象、分配值、将其写入 XML、读取 XML 并将其与原始对象进行比较。我假设您拥有完整的类(class)结构。

// This is your expected object which you are going to write to xml.
var sourceObject = new SomeClassToWriteInXML();

// Writing object to XML.
var document = new XDocument();
var serializer = new XMLSerializer(typeof(SomeClassToWriteInXML));
using (var writer = document .CreateWriter())
{
serializer.Serialize(writer, source);
}
// write document to a file.

// Now document has the XML document.
// Need to read file you have just created. For testing sake I am reading document.
var actual = new SomeClassToWriteInXML();
// Deserialize xml to get actual object (which should be equal to sourceObject)
using (var reader = document.CreateReader())
{
actual = (SomeClassToWriteInXML)serializer.Deserialize(reader);
}

Assert.AreEqual(expected.First(), actual.First());

关于c# - 如何对xml文件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476819/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com