Тестирование GUI-приложений

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Тестирование GUI-приложений

Сообщение krab » 30.07.2010 23:48:22

Чем можно протестировать пользовательский интерфейс приложения, созданного в Lazarus? Примерно так:
Код: Выделить всё
  Form1.Show;
  Form1.Edit1.Text := 'Иванов'
  Form1.Edit2.Text := '22.02.1710';
  Form1.ComboBox1.ItemIndex := 4;
  Click(Form1.ButtonSave);
  // проверяем, что данные про Иванова в БД не добавлены, так как введенный год неправильный (слишком давний)

Только в более удобном виде. Какие-нибудь фреймворки, библиотеки и т. п., готовые примеры?
krab
постоялец
 
Сообщения: 108
Зарегистрирован: 17.02.2010 18:23:08

Re: Тестирование GUI-приложений

Сообщение Padre_Mortius » 31.07.2010 17:08:28

FPCUnit Test Case в самом Lazarus, но сам его не пробовал. Если кто приведет примеры буду премного благодарен
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Тестирование GUI-приложений

Сообщение Climber » 01.08.2010 22:56:10

Поищи по форуму, тут кто-то давал ссылку на описание модуля fpcunit. Там 7-страничный pdf на буржуйском - более-менее поймешь, что к чему, что за модуль и как работает. Когда прочитаешь, будет проще понять примеры.
Там суть в чем: устанавливаешь этот модуль ($lazarusdir$/components/fpcunit/), потом у тебя появляется в меню "Файл" - "Создать" пункт "FPCUnit Test Application".
Основа теста:
Метод SetUp - создание тестового окружения
Метод TearDown - уничтожение тестового окружения
Они вызываются перед каждым тестом и после каждого теста. Дальше пишешь сам тест, в котором эмулируешь работу своей программы.
Завтра с работы скину пример, у меня этих тестов вагон и маленькая тележка.
Пока почитай вообще про модульное тестирование.
Можешь меня спрашивать, расскажу.

Добавлено спустя 8 минут 48 секунд:
P. S. На freepascal.ru вроде была статья про юнит-тесты, не? Мне казалось, я что-то такое читал. Или не здесь?

Добавлено спустя 11 минут 44 секунды:
http://rsdn.ru/article/testing/UnitTesting.xml#E5

Добавлено спустя 9 часов 47 минут 16 секунд:
Пример юнит-теста.
Создаем FPCUnit Test Application, получаем предложение создать новый набор тестов (класс TTestCase). Там же в окошке ставим галочки "Создать метод SetUp" и "Создать метод TearDown".
Пример:
Код: Выделить всё
unit TestCase1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, fpcunit, testutils, testregistry;

type

  { TMyClass }
  { Это тестируемый класс }
  TMyClass = class
    x:  integer;
    procedure Change(a: integer);
  end;

  TMyTestCase = class(TTestCase)
  protected
    MyClass: TMyClass;
    procedure SetUp; override;    // Это процедура для создания тестового окружение. Выполняется перед каждым тестом.
    procedure TearDown; override; // Это процедура для уничтожения тестового окружения. Выполняется после каждого теста.
  published
    procedure TestN1;    // Это тест. В нем выполняется одно простейшее деqствие и проверяется результат с помощью одной из многочисленных функций AssertXXX
    procedure TestN2;    //
    procedure TestN3;    //
    procedure TestN4;    //
    procedure TestN5;    //
    procedure TestN6;    //
  end;

implementation

procedure TMyTestCase.TestN1;
begin
  MyClass.Change(3);
  AssertEquals('Метод Change не работает', 4, MyClass.x);
end;

procedure TMyTestCase.SetUp;
begin
  MyClass:=TMyClass.Create;
  MyClass.x:=1;
end;

procedure TMyTestCase.TearDown;
begin
  MyClass.Free;
end;

{ TMyClass }

procedure TMyClass.Change(a: integer);
begin
  x:=x+a;
end;

initialization

  RegisterTest(TMyTestCase);
end.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

Рейтинг@Mail.ru