Привет, я хотел бы обратиться к сообществу, чтобы получить представление и совет относительно подхода к разработке через тестирование для работы, которую я выполняю.
Я работаю над проектом ASP.NET MVC3, который анализирует физический файл XML (содержащий данные диаграммы и таблицы). Сначала приложение создает модельное представление узлов xml. Контроллер предназначен для выполнения логики приложения,
которая в конечном итоге преобразуется в определенное HTML-представление с диаграммами и таблицами.
Я думаю, что буду строить модель, которая представляет xml, т.е. классы, такие как набор данных, заголовок, измерение и т. д. с соответствующими интерфейсами. Это правильный подход. (Пожалуйста, смотрите ниже образец xml)
Какие модульные тесты я бы написал? Начал бы я с модульных тестов, которые обращаются к физическим файлам XML (вероятно, нет)? Должен ли я передавать фрагменты строк xml в Xdocument? (разве это не код .net?) Предполагая, что я не хочу создавать конкретные классы XDocument, как мне издеваться над объектом, например
Первый тест, который я хочу сделать (я думаю), - это загрузить xml и проверить правильность end_Date.
У меня есть класс XMLHelper, который загружает xml и возвращает представление класса заголовка с датой окончания свойства.
Итак, мой конкретный код будет выглядеть примерно так
var dataset = XmlHelper.Load(filePathOrXmlStream);
var header=dataset.Header;
Assert.AreEqual("5/06/2011",header.EndDate);
предположим, что приведенный ниже XML используется для загрузки потока или файла.
Источник XML
<dataset>
<header>
<end_date>5/06/2011</end_date>
<dimension id="mkt" desc="market">
<item mkt="0" desc="Company A" />
<item mkt="1" desc="Company B" />
</dimension>
<dimension id="prd" desc="product">
<item prd="0" desc="Product A " Groups_Total="Segment Totals" Total="Yes" Product="All" grp="Category" />
</dimension>
<dimension id="msr" desc="measure">
<item msr="0" tag="ACTIVE_1" desc="Active Products" />
</dimension>
<dimension id="tim" desc="time">
<item tim="0" tag="LAST WEEK -52" desc="06/06/10 " />
<item tim="1" tag="LAST WEEK -26" desc="05/12/10 " />
<item tim="2" tag="LAST WEEK 0" desc="05/06/11 " />
</dimension>
</header>
<data>
<dpGroup tim="0">
<dp mkt="0" prd="0" msr="0" tim="0">1031</dp>
<dp mkt="1" prd="0" msr="0" tim="0">986</dp>
</dpGroup>
<dpGroup tim="1">
<dp mkt="0" prd="0" msr="0" tim="1">970</dp>
<dp mkt="1" prd="0" msr="0" tim="1">937</dp>
</dpGroup>
<dpGroup tim="2">
<dp mkt="0" prd="0" msr="0" tim="2">982</dp>
<dp mkt="1" prd="0" msr="0" tim="2">955</dp>
</dpGroup>
</data>
</dataset>