Как я выполняю TestCase от IDE?
я создал новый проект, с синглом, простым, форма:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
Теперь я добавлю тестовый сценарий для проверки того продвижения Button1
делает то, что это должно:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
TestFramework;
type
TForm1Tests = class(TTestCase)
private
f: TForm1;
protected
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestButton1Click;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//todo
end;
{ TForm1Tests }
procedure TForm1Tests.SetUp;
begin
inherited;
f := TForm1.Create(nil);
end;
procedure TForm1Tests.TearDown;
begin
f.Free;
inherited;
end;
procedure TForm1Tests.TestButton1Click;
begin
f.Button1Click(nil);
Self.CheckEqualsString('Hello, world!', f.Caption);
end;
end.
Учитывая какой я сделал (тестовый код в проекте GUI), как я теперь инициировал выполнение тестов? Если я продвигаю F9 затем, форма просто появляется:
Идеально была бы кнопка или пункт меню, в Выполнении высказывания IDE Тесты DUnit:
Я живу в сказочной стране? Фэнтезийная земля, живущая в gumdrop, содержится на маршруте леденца на палочке?
Я согласен с Уве Раабе, но иногда бывает полезно иметь в приложении «скрытую» ссылку для запуска графического интерфейса DUnit. Я использую:
TGUITestRunner.runRegisteredTests;
Вызовите это с помощью вашей кнопки в графическом интерфейсе DUnit, который откроется для вас, чтобы вручную запустить и просмотреть результаты теста.
Например, если вы удерживаете специальную комбинацию клавиш при открытии собственной «Панели управления» программы, вы получите несколько дополнительных записей:
Добавление TestCase в основной проект - не лучший вариант. Вы должны создать отдельный TestProject (вы можете разместить его в той же ProjectGroup, что и основной проект), добавить TestCase и запустить.
Мне нравится идея иметь команду 'Run DUnit tests'
в IDE.
Его можно реализовать, проверив наличие проекта DUnit в той же папке, с тем же именем, что и текущий проект:
В этом случае в IDE должна включиться команда Run DUnit tests.
После выполнения тестов, должен отобразиться список всех неудачных тестов, который позволяет перейти к исходной строке, где тест failed.
Если тесты вызвали утечку памяти, должен быть отображен список всех утечек, который позволяет перейти к исходной строке, где была создана утечка памяти
(DUnit может быть настроен для обнаружения утечек памяти и неудачных тестов, когда они были найдены)