DUnit: Как запустить тесты?

Как запустить 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.

Учитывая, что я сделал (тестовый код в проекте с графическим интерфейсом), как мне теперь запустить прогон тестов? Если я нажму F9, то форма просто появится:

alt text

В идеале в IDE должна быть кнопка или опция меню, в которой говорится " Выполнить тесты DUnit":

alt text

Живу ли я в мире грез? Фэнтезийная земля, живущая в леденце на леденце?

Ответ 1

Я согласен с Uwe Raabe, но иногда бывает полезно иметь "скрытую" ссылку в вашем приложении для запуска GUI DUnit. Я использую:

TGUITestRunner.runRegisteredTests;

Вызовите это с помощью кнопки в графическом интерфейсе DUnit, чтобы вы могли вручную запускать и просматривать тестовый результат.


Например, если вы удерживаете специальную комбинацию клавиш при открытии программного обеспечения собственной "Панель управления", вы получаете несколько дополнительных записей:

enter image description here

Ответ 2

Добавление TestCase к основному проекту - это не путь. Вы должны создать отдельный TestProject (вы можете иметь его в той же ProjectGroup, что и основной проект), добавить TestCase и запустить.

Ответ 3

Мне нравится идея иметь команду 'Run DUnit tests' в среде IDE.

Он может быть реализован путем проверки проекта DUnit в той же папке с тем же именем, что и текущий проект:

  • Project1.dpr → тестируемое программное обеспечение
  • Project1.Tests.dpr = > приложение DUnit test

В этом случае среда IDE должна включить команду Run DUnit tests.

  • После выполнения тестов должен отображаться список всех неудачных тестов, которые позволяют перейти к исходной строке, где тест не удалось.

  • Если тесты вызвали утечку памяти, должен отображаться список всех утечек, что позволяет перейти к исходной строке, где утечка памяти была создана

(DUnit может быть сконфигурирован для обнаружения утечек памяти и тестов отказа при обнаружении)