我在 FastMM 误报方面遇到了一些问题。这一次,泄漏是在案例测试表格中。它与我在这里描述的非常相似。
我有一个表单和一些普通的旧 VCL 控件。第一次测试运行显示实际上不存在的泄漏。第二次运行没有泄漏。我搜索了所有 DUnit 源代码,但找不到修复它的原因。有人可以帮助我吗?
我不能运行两次测试,因为: 1. 它将在持续集成中运行;2.有些测试确实需要一些时间,加倍它是不明智的。
我检查了 DUnit GUI 中的最后 3 个选项: - 在关机时报告内存泄漏类型 - 如果内存泄漏,则测试用例失败 - 在 SetUp/TearDown 中忽略内存泄漏
以下是示例代码:
// form
type
TForm2 = class(TForm)
button1: TButton;
end;
implementation
{$R *.dfm}
// test
type
TTest = class(TGUITestCase)
private
a: TForm2;
public
procedure SetUp; override;
procedure TearDown; override;
published
procedure Test;
end;
implementation
procedure TTest.Setup;
begin
a := TForm2.Create(nil);
end;
procedure TTest.TearDown;
begin
FreeAndNil(a);
end;
procedure TTest.Test;
begin
a.Show;
a.close;
end;