Поищи по форуму, тут кто-то давал ссылку на описание модуля 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.