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