FastMMの誤検知で問題が発生しました。今回のリークは、フォームのテストの場合です。これは、ここで説明したものと非常によく似ています。
フォームとその中にいくつかの単純な古いVCLコントロールを取得しました。最初のテスト実行では、実際には存在しないリークが示されています。2回目の実行ではリークは発生しません。すべてのDUnitソースコードを検索しましたが、修正する理由が見つかりませんでした。誰かが私を助けることができますか?
次の理由により、テストを2回実行する余裕はありません。1。継続的インテグレーションで実行されます。2.一部のテストには実際に時間がかかり、2倍にするのは賢明ではありません。
DUnitGUIで最後の3つのオプションを確認しました。-シャットダウン時にメモリリークタイプを報告する-メモリリークが発生した場合はTestCaseに失敗する-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;