10

如何从 IDE 运行TestCase

我创建了一个新项目,具有一个简单的表单:

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.

现在我将添加一个测试用例来检查 pushButton1是否可以做到:

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 中有一个按钮或菜单选项,显示Run DUnit Tests

替代文字

我生活在一个梦幻世界吗?一个幻想的土地,住在棒棒糖巷的橡皮糖房子里?

4

3 回答 3

12

将 TestCase 添加到主项目不是要走的路。您应该创建一个单独的 TestProject(您可以将它放在与主项目相同的 ProjectGroup 中),添加一个 TestCase 并运行。

于 2010-03-22T16:16:07.630 回答
6

我同意 Uwe Raabe 的观点,但有时在您的应用程序中使用“隐藏”链接来运行 DUnit GUI 会很有用。我用:

TGUITestRunner.runRegisteredTests;

从 DUnit GUI 上的按钮调用此命令将打开,供您手动运行和查看测试输出。


例如,如果您在打开软件自己的“控制面板”时按住一个特殊的组合键,您会得到一些高级条目:

在此处输入图像描述

于 2010-03-22T16:22:16.263 回答
2

'Run DUnit tests'我喜欢在 IDE中使用命令的想法。

它可以通过在同一文件夹中检查与当前项目同名的 DUnit 项目来实现:

  • Project1.dpr -> 被测软件
  • Project1.Tests.dpr => DUnit 测试应用

在这种情况下,IDE 应该启用 Run DUnit tests 命令。

  • 执行测试后,应显示所有失败测试的列表,允许跳转到测试失败的源代码行。

  • 如果测试导致内存泄漏,应显示所有泄漏的列表,允许跳转到已创建内存泄漏的源代码行

(DUnit 可以配置为检测内存泄漏并在发现内存泄漏时测试失败)

于 2010-03-22T18:56:02.240 回答