У меня есть класс, который сериализует набор объектов (с использованием XML-сериализации), которые я хочу провести модульное тестирование.
Моя проблема в том, что я чувствую, что буду тестировать реализацию XML-сериализации .NET, а не что-нибудь полезное. У меня также есть небольшой сценарий с курицей и яйцом, когда для тестирования Reader мне понадобится файл, созданный Writer.
Я думаю, что вопросы (есть 3, но они все связаны), я в конечном счете ищу обратную связь:
- Можно ли протестировать Writer без использования Reader?
- Какова лучшая стратегия для тестирования ридера (XML-файл? Насмешка с записью / воспроизведением)? Действительно ли все, что вы действительно будете делать, это тестировать значения свойств объектов, которые были десериализованы?
- Какая лучшая стратегия для тестирования писателя!
Справочная информация о сериализации Xml
Я не использую схему, поэтому все элементы и атрибуты XML соответствуют свойствам объектов. Поскольку схемы нет, теги / атрибуты, которые не соответствуют атрибутам, найденным в свойствах каждого объекта, просто игнорируются XmlSerializer (поэтому значение свойства равно нулю или по умолчанию). Вот пример
<MyObject Height="300">
<Name>Bob</Name>
<Age>20</Age>
<MyObject>
будет отображаться в
public class MyObject
{
public string Name { get;set; }
public int Age { get;set; }
[XmlAttribute]
public int Height { get;set; }
}
и наоборот. Если объект изменится на приведенный ниже, XML все равно будет успешно десериализован, но FirstName будет пустым.
public class MyObject
{
public string FirstName { get;set; }
public int Age { get;set; }
[XmlAttribute]
public int Height { get;set; }
}
Недопустимый XML-файл будет десериализован правильно, поэтому модульный тест пройдет, если вы не запустили утверждения для значений MyObject.