ДУнит:Как запускать тесты?
-
21-09-2019 - |
Вопрос
Как мне бежать Прецедентэто из 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:
Я живу в мире снов?Страна фантазий, жизнь в мармеладном домике на леденцовом переулке?
Решение
Я согласен с Уве Раабе, но иногда может быть полезно иметь в вашем приложении «скрытую» ссылку для запуска графического интерфейса DUnit.Я использую:
TGUITestRunner.runRegisteredTests;
Вызовите это с помощью кнопки, и откроется графический интерфейс DUnit, где вы сможете вручную запустить и просмотреть выходные данные теста.
Например, если вы удерживаете специальную комбинацию клавиш при открытии собственного программного обеспечения "Панель управления", вы получите некоторые дополнительные записи:
Другие советы
Добавление TestCase в основной проект — не лучший вариант.Вам следует создать отдельный TestProject (вы можете разместить его в той же ProjectGroup, что и основной проект), добавить TestCase и запустить.
Мне нравится идея иметь 'Run DUnit tests'
команда в IDE.
Это можно реализовать, проверив наличие проекта DUnit в той же папке с тем же именем, что и у текущего проекта:
- Project1.dpr -> тестируемое программное обеспечение
- Project1.Tests.dpr => тестовое приложение DUnit
В этом случае IDE должна включить команду «Выполнить тесты DUnit».
После выполнения тестов должен отображаться список всех неудачных тестов, что позволяет перейти к исходной строке, где находится тест. неуспешный.
Если тесты вызвали утечки памяти, должен быть отображен список всех утечек, позволяющий перейти к строке исходного кода, где произошла утечка памяти
(DUnit можно настроить на обнаружение утечек памяти и провалить тесты, если таковые были обнаружены)