Разработка юнит-тестов для приложения, которое манипулирует XHTML - PullRequest
1 голос
/ 25 сентября 2010

Я работаю над приложением, которое будет принимать XHTML.

<documents>
<document>
    <span class="style1"> This is some text1 </span>
    <span class="style2"> This is some text2 </span>
    <span class="style3"> This is some text2 </span>
</document>
</documents>

Значения атрибута класса в основном являются стилями.Эти стили отображаются на определенные действия в базе данных.Действия указывают моему приложению, что делать с этими тегами span, когда мое приложение видит эти стили.

Стиль - Действие - ReplaceText

Стиль1 - Удалить - NULL

Style2 - Сохранить - NULL

Style3 - Заменить - H1

Приложение имеет следующий вывод: -

<documents>
<document>
     This is some text1 
    <span class="style2"> This is some text2 </span>
    <h1> This is some text2 </h1>
</document>
</documents>

Ниже приведен псевдокод: -

foreach(XmlNode documentNode in documentNodes)
{
    XmlNode[] spanNodes =documentNode.SelectNodes("//span") ;
 foreach(XmlNode spanNode in spanNodes)
 {
  if(spanNode .Attributes["class"]!=null && !string.IsNullOrEmpty(spanNode .Attributes["class"].value)))
  {
   string styleName = spanNode.Attributes["class"].value;
   string styleActionMapping =  GetActionMappingForStyle (styleName);
   switch (styleActionMapping)
   {

    case StyleActionMapping.Remove
                            RemoveSpanNode(spanNode);
    break;
    case StyleActionMapping.ReplaceWith
                            ReplaceSpanNode(spanNode);
    break;
    case StyleActionMapping.Keep
    break;

   }

  }
 }
}

Ввод может быть более сложным, чем я показал выше, и приложение может быть очень подвержено ошибкам.S, я хотел использовать модульное тестирование, чтобы, когда кто-то вносил какие-либо изменения в приложение, я мог запускать модульные тесты и быть уверенным в их работоспособности.Итак, я хотел иметь простую таблицу, подобную этой, с предварительно заполненными данными: -


Id - Сценарий - Ввод - ExpectedOutput

, и я хочу протестировать код своего приложения сэто модульное тестирование данных с использованием Visual studio.NET 2010. Может ли кто-нибудь дать мне указания по этому вопросу.

Извините за этот длинный вопрос.Я новичок в модульном тестировании, и я просто хотел быть максимально понятным.Не стесняйтесь задавать вопросы.

1 Ответ

1 голос
/ 25 сентября 2010

Я предполагаю, что последняя часть поста - это действительно вопрос: как писать тесты на основе данных в .NET.

Мне нравится иметь простые файлы, которые встроены в сборку модульного теста (Действие сборки: встроенный ресурс). Затем вы можете использовать Assembly.GetManifestResourceStream для извлечения данных. Иногда у меня будет один файл для ввода и один для вывода; в других случаях у меня может быть один файл, который содержит несколько входов и выходов. Это, безусловно, будет выполнимо для XML:

<tests>
  <test id="FooBar">
     <input>
       ...
     </input>
     <expected-output>
       ...
     </expected-output>
  </test>
<tests>

Тогда вы можете просто загрузить один документ, а затем получить входные и выходные данные для одного теста; при необходимости преобразуйте его в отдельный документ, затем передайте его производственному коду и, наконец, сравните вывод. По общему признанию, сравнение может быть сложным - это будет зависеть от таких вещей, как сжатие пробелов ... но обычно это выполнимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...