Предыдущая серия была тут - http://programmingmindstream.blogspot.ru/2014/02/1-dunit.html
Все исходники будут доступны тут - https://sourceforge.net/p/rumtmarc/code-0/HEAD/tree/trunk/Blogger/DraftsAndScketches/SomeTestProjects/DummyCalculator/Chapter2/
Давайте теперь добавим ОДИН тест "бизнес-логики" в том виде в котором она есть.
Вот он:
Абстрактная часть:
Конкретный тест:
По-моему тут всй предельно ясно.
Ищем главную форму приложения. Вбиваем текст в Edit1 и Edit2. Нажимаем кнопку сложения. Проверяем результат из Edit3.
Все исходники будут доступны тут - https://sourceforge.net/p/rumtmarc/code-0/HEAD/tree/trunk/Blogger/DraftsAndScketches/SomeTestProjects/DummyCalculator/Chapter2/
Давайте теперь добавим ОДИН тест "бизнес-логики" в том виде в котором она есть.
Вот он:
Абстрактная часть:
unit CalculatorGUITest; interface uses TestFrameWork, MainForm ; type TCalculatorGUITest = class(TTestCase) protected procedure VisitForm(aForm: TfmMain); virtual; abstract; published procedure DoIt; end;//TCalculatorGUITest implementation uses Forms ; procedure TCalculatorGUITest.DoIt; var l_Index : Integer; begin for l_Index := 0 to Screen.FormCount do if (Screen.Forms[l_Index] Is TfmMain) then begin VisitForm(Screen.Forms[l_Index] As TfmMain); break; end;//Screen.Forms[l_Index] Is TfmMain end; end.
Конкретный тест:
unit PlusTest; interface uses CalculatorGUITest, MainForm ; type TPlusTest = class(TCalculatorGUITest) protected procedure VisitForm(aForm: TfmMain); override; end;//TPlusTest implementation uses TestFrameWork, SysUtils ; procedure TPlusTest.VisitForm(aForm: TfmMain); const aA = 10; aB = 20; begin aForm.Edit1.Text := IntToStr(aA); aForm.Edit2.Text := IntToStr(aB); aForm.Button1.Click; Check(StrToInt(aForm.Edit3.Text) = aA + aB); end; initialization TestFramework.RegisterTest(TPlusTest.Suite); end.
По-моему тут всй предельно ясно.
Ищем главную форму приложения. Вбиваем текст в Edit1 и Edit2. Нажимаем кнопку сложения. Проверяем результат из Edit3.
Получается каждая форма у нас как отдельный объект, какой она по сути и есть.
ОтветитьУдалитьДалее "вопрос как с ней связаться, и дать реальные данные. В данном случае их нет."
Спасибо за демонстрацию.
но как это с моим примером соотносится?
Удалитья же в ПРИМЕРЕ тестирую УЖЕ созданные формы.. СОЗДАННЫЕ ЗАКОННЫМИ методами..
это и ДРУГИХ примеров касается...
если формы созданы ЗАКОННЫМИ МЕТОДАМИ, то они - ТЕСТИРУЕМЫ,..
Если у Вас ЕСТЬ ПРОБЛЕМА - сделайте ОДИН ШАГ - задайте ПРЕДМЕТНЫЙ вопрос, про СВОИ формы и классы. Я думаю - я СМОГУ НА него ПРЕДМЕТНО ответить.
Удалитья подозреваю чего вам не хватает :-) - Dependency Injection
Удалитьмы его ВОВСЮ применяем и для "инициализации форм" тоже
но это пока лишь - "догадки"...
"Пища для ума".. Процитирую сам себя:
Удалить"Я последнее время говорю про Украину и ЗАКОННОСТЬ... Неожиданный разрез - про ЗАКОННОСТЬ в программировании, вот - http://programmingmindstream.blogspot.ru/2014/02/2.html?showComment=1393364099651#c6835117592870444331
из той же "плоскости" кстати...
Если что-то СДЕЛАНО ЗАКОННО, то оно - ПОДЛЕЖИТ ВАЛИДАЦИИ...
Если что-то сделано "криво", то и ВАЛИДАЦИИ (читай тестированию) - оно "плохо подлежит"..."