У меня есть класс, который сериализует набор объектов (с использованием сериализации XML), которые я хочу использовать unit test.
Моя проблема заключается в том, что мне кажется, что я буду тестировать реализацию XML-сериализации XML, а не что-нибудь полезное. У меня также есть небольшой сценарий курица и яйцо, где, чтобы протестировать Reader, мне понадобится файл, созданный Writer, чтобы сделать это.
Я думаю, что вопросы (там 3, но все они относятся) Я в конечном счете ищут обратную связь:
- Возможно ли протестировать Writer без использования Reader?
- Какая лучшая стратегия для тестирования читателя (файл XML? Mocking with record/playback)? Это то, что все, что вы действительно будете делать, это тестирование значений свойств объектов, которые были десериализованы?
- Какая лучшая стратегия для тестирования писателя!
Фоновая информация о сериализации Xml
Я не использую схему, поэтому все элементы и атрибуты XML соответствуют свойствам объектов. Поскольку нет схемы, теги/атрибуты, которые не соответствуют свойствам, найденным в свойствах каждого объекта, просто игнорируются XmlSerializer (поэтому значение свойства равно null или по умолчанию). Вот пример
<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 файл будет десериализован правильно, поэтому unit test пройдет, если вы не выполнили утверждения о значениях MyObject.