我遇到了FastMM误报的问题。这次泄漏发生在测试表单的情况下,与我在这里描述的情况非常相似。
我有一个包含一些老旧的VCL控件的表单。第一次运行测试会显示泄漏,但实际上并不存在泄漏。第二次运行没有泄漏。我已经查看了所有DUnit源代码,但无法找到原因以解决它。请问有人能帮助我吗?
我不能承担两次运行测试的成本,因为:1.它将在持续集成中运行;2.有些测试确实需要一些时间,加倍运行不明智。
我在DUnit GUI中勾选了以下三个选项: - 在关闭时报告内存泄漏类型 - 如果有内存泄漏则失败 - 忽略SetUp/TearDown中的内存泄漏
以下是示例代码:
我有一个包含一些老旧的VCL控件的表单。第一次运行测试会显示泄漏,但实际上并不存在泄漏。第二次运行没有泄漏。我已经查看了所有DUnit源代码,但无法找到原因以解决它。请问有人能帮助我吗?
我不能承担两次运行测试的成本,因为:1.它将在持续集成中运行;2.有些测试确实需要一些时间,加倍运行不明智。
我在DUnit GUI中勾选了以下三个选项: - 在关闭时报告内存泄漏类型 - 如果有内存泄漏则失败 - 忽略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;
{$define FullDebugMode}
),并将FastMM_FullDebugMode.dll
复制到exe文件旁边。 - balazs