2016-05-04 8 views
0

私は単体テストに慣れていないので、単体テストのXMLデシリアライゼーションのベストプラクティスは何か疑問です。ユニットテストXMLデシリアライゼーション

次のXML考えてみましょう:私は使用してXMLをデシリアライズ

[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; } 
    } 

 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; 
     } 

最高だろうどのような人々のための

<people> 
    <person id="1"> 
    <name>Joe</name> 
    <age>28</age> 
    </person> 
    <person id="2"> 
    <name>Jack</name> 
    <age>38</age> 
    </person> 
</people> 

そして、次のモデルクラスを上記のGetListOfPeopleメソッドを単体テストするメソッド?

答えて

0

xmlファイルを入力パラメータとして使用するようにメソッドを変更できる場合は、サンプルxmlファイルを作成してテストプロジェクトに追加することができます。 xmlファイルの値を知っているので、値の直接比較を開始できます。 xmlファイルは、いくつかのソースからのコードに来ている、あなたはそれができなかったと思われる場合

var persons = x.GetListOfPeople("sample.xml"); 
Assert.AreEqual("Joe", persons[0].Name); 
Assert.AreEqual(38, persons[1].Age); 

あなたがあなたのテストで提供されるサンプルファイルを使用します考えると、あなたは次のように確認することができますあなたのスキーマに違反するいくつかのサンプルXMLファイルを作成して、あなたのメソッドを呼び出すためのテストを準備することができます。スキーマが正しくない場合、例外をスローする必要があります。

これが役に立ちます。

+1

これは意味があります。そこで、有効な "samlpe.xml"のテストメソッドと、無効なxml samleを持つテストメソッドを用意します。このメソッドは、ExpectedException attritbuteを適用します。ありがとうございました。 – cutthejargon

関連する問題