Перейти к содержимому

Фотография

Ликбез по unit-тестированию


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 galogenIt

galogenIt

    Постоянный участник

  • Members
  • PipPipPip
  • 192 сообщений
  • ФИО:Эдуард

Отправлено 06 сентября 2011 - 06:26

Коллеги,

не судите строго, но объясните на примере. Как правильно составить (вообще) как составить unit-тест, например для подобного кода?
if vDoc.ClassID.InheritsFromClass(КПДокументНаПериод) and (позФИКСЦЕНА >= 0 or позНДСФИКСЦЕНА >= 0 or позСУММАФЦЗАПЕРИОД >= 0)  then
        begin
          netStrok := false;
          var ДопСостоянияДистр := ArrayToComma([СостояниеДистрибутива.Подключен, СостояниеДистрибутива.НаСкладе]);
          var ДатаНачала := EndOfDay(ToDate(vDoc.GetAttrValuesByName('ДатаНачала')));
          if fSN.AsString <> '' then
            ТекДистрибутив := Номенклатура.ВернутьДистрибутив(vDoc.Клиент, CommaGet(fSN.AsString, 0),
             Номенклатура(fArticle.AsInteger), ДопСостоянияДистр, ДатаНачала);
          if assigned(ТекДистрибутив) then
            var ФиксЦена := Rat.EvalQuery(
             SQLText
              !Select Reg.DistrFixedPrice
                From RegChangeDistributiv Reg
                Where Reg.Distributiv = &ToInt(ТекДистрибутив)&
                  and Reg.BeginDate <= &ToStr(ДатаНачала)&
                  and Reg.EndDate > &ToStr(ДатаНачала)&
                  and IsWorked = -1
                Order by Reg.BeginDate desc!
             end);
          ФиксЦена := ToFloat(ФиксЦена);
          if позФИКСЦЕНА >= 0 then
            vMas[i, позФИКСЦЕНА] := ФиксЦена;
          if позНДСФИКСЦЕНА >= 0 then
            vMas[i, позНДСФИКСЦЕНА] := Round(ToFloat(ФиксЦена) * fNDSRate.AsFloat / 100, 2, 1);
          if позСУММАФЦЗАПЕРИОД >= 0 then
          begin
            var ДатаОкончания := EndOfDay(ToDate(vDoc.GetAttrValuesByName('ДатаОкончания')));
            var КолМес := Функции_мат.КолМесяцев(ДатаНачала, ДатаОкончания);
            vMas[i, позСУММАФЦЗАПЕРИОД] := ФиксЦена * КолМес;
          end;

Т.е. на выходе будем иметь ФИКСЦЕНА или НДСФИКСЦЕНА или СУММАФЦЗАПЕРИОД. Как правильно изолироваться от реальных объектов и переменных? Мне нужно объяснить это на пальцах, а лучше показать пример программисту, чтобы мотивировать его на создание собственных юнит-тестов. :)

Спасибо
  • 0
С уважением, Эдуард!

#2 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 06 сентября 2011 - 08:18

Лучше это перенести в форум по Автоматизации тестирования, а не с привязкой к конкретному инструменту.
Только сегодня наткнулся на отличное видео про юнит тесты. Рекомендую к просмотру вместе с программистом. Там как раз подробно объясняется, как изолироваться от внешних зависимостей.
  • 0

#3 galogenIt

galogenIt

    Постоянный участник

  • Members
  • PipPipPip
  • 192 сообщений
  • ФИО:Эдуард

Отправлено 06 сентября 2011 - 11:01

Лучше это перенести в форум по Автоматизации тестирования, а не с привязкой к конкретному инструменту.
Только сегодня наткнулся на отличное видео про юнит тесты. Рекомендую к просмотру вместе с программистом. Там как раз подробно объясняется, как изолироваться от внешних зависимостей.

Спасибо за совет.

Посмотрел видео (вместе с программистами). Не это не айс. Это конкретный пример реализации, причем очень запутанный и слишком ограниченный по возможностям, исполнению. Да и доклад слишком растянут, а в сухом остатке имхо одни междометия

Коллеги-модераторы, можете сделать это? Перенести тему.
  • 0
С уважением, Эдуард!

#4 VitalyD

VitalyD

    Опытный участник

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 06 сентября 2011 - 15:14

переместил
  • 1

#5 galogenIt

galogenIt

    Постоянный участник

  • Members
  • PipPipPip
  • 192 сообщений
  • ФИО:Эдуард

Отправлено 06 сентября 2011 - 18:33

переместил

Большое спасибо
  • 0
С уважением, Эдуард!


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных