单元测试 XML 反序列化
Unit testing XML deserialisation
我是单元测试的新手,我想知道什么是单元测试的最佳实践 xml 反序列化。
考虑以下 xml:
<people>
<person id="1">
<name>Joe</name>
<age>28</age>
</person>
<person id="2">
<name>Jack</name>
<age>38</age>
</person>
</people>
而下面的模型class为民:
[XmlRoot(ElementName ="people")]
public class People
{
public People() { PeopleList = new List<Person>(); }
[XmlElement("person")]
public List<Person> PeopleList { get; set; }
}
public class Person
{
[XmlAttribute("id")]
public int id { get; set; }
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("age")]
public int Age { get; set; }
}
我反序列化 xml 使用:
public List<Person> GetListOfPeople()
{
People plist = new People();
string content;
using (StreamReader sr = new StreamReader(manager.Open("People.xml")))
{
var serializer = new XmlSerializer(typeof(People));
plist = (People)serializer.Deserialize(sr);
}
return plist.PeopleList;
}
对上面的 GetListOfPeople 方法进行单元测试的最佳方法是什么?
如果您可以更改方法以将 xml 文件作为输入参数,则可以创建示例 xml 文件并将其添加到您的测试项目中。由于您知道 xml 文件的值,因此可以开始直接比较这些值。
考虑到您将使用您在测试中提供的示例文件,您可以这样验证:
var persons = x.GetListOfPeople("sample.xml");
Assert.AreEqual("Joe", persons[0].Name);
Assert.AreEqual(38, persons[1].Age);
如果 xml 文件是从某个来源进入您的代码,而您认为它不可能一直遵循您的 xml 模式,那么您可能可以创建一些示例 xml 文件再次违反您的架构并准备测试以调用您的方法,如果架构不正确,该方法应该抛出一些异常。
希望对您有所帮助。
我是单元测试的新手,我想知道什么是单元测试的最佳实践 xml 反序列化。
考虑以下 xml:
<people>
<person id="1">
<name>Joe</name>
<age>28</age>
</person>
<person id="2">
<name>Jack</name>
<age>38</age>
</person>
</people>
而下面的模型class为民:
[XmlRoot(ElementName ="people")]
public class People
{
public People() { PeopleList = new List<Person>(); }
[XmlElement("person")]
public List<Person> PeopleList { get; set; }
}
public class Person
{
[XmlAttribute("id")]
public int id { get; set; }
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("age")]
public int Age { get; set; }
}
我反序列化 xml 使用:
public List<Person> GetListOfPeople()
{
People plist = new People();
string content;
using (StreamReader sr = new StreamReader(manager.Open("People.xml")))
{
var serializer = new XmlSerializer(typeof(People));
plist = (People)serializer.Deserialize(sr);
}
return plist.PeopleList;
}
对上面的 GetListOfPeople 方法进行单元测试的最佳方法是什么?
如果您可以更改方法以将 xml 文件作为输入参数,则可以创建示例 xml 文件并将其添加到您的测试项目中。由于您知道 xml 文件的值,因此可以开始直接比较这些值。
考虑到您将使用您在测试中提供的示例文件,您可以这样验证:
var persons = x.GetListOfPeople("sample.xml");
Assert.AreEqual("Joe", persons[0].Name);
Assert.AreEqual(38, persons[1].Age);
如果 xml 文件是从某个来源进入您的代码,而您认为它不可能一直遵循您的 xml 模式,那么您可能可以创建一些示例 xml 文件再次违反您的架构并准备测试以调用您的方法,如果架构不正确,该方法应该抛出一些异常。
希望对您有所帮助。