Предыдущая серия была тут - 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
из той же "плоскости" кстати...
Если что-то СДЕЛАНО ЗАКОННО, то оно - ПОДЛЕЖИТ ВАЛИДАЦИИ...
Если что-то сделано "криво", то и ВАЛИДАЦИИ (читай тестированию) - оно "плохо подлежит"..."