我正在使用DUnit和FastMM来捕获未释放的内存块,但似乎存在一个错误。我不知道这是FastMM、DUnit还是Delphi本身的问题,但请看以下情况:
当我的测试用例包含内部字符串时,测试在出现内存泄漏时失败。如果我不关闭DUnit GUI并再次运行相同的测试,则测试会通过。我认为DUnit GUI Testing也会出现相同的问题。我的应用程序中没有泄漏,证明在这些情况下FastMM不会生成泄漏报告。
问题1: 是否有一种方法可以忽略它们而不设置AllowedMemoryLeakSize?
问题2: 我正在使用Delphi 7,是否有关于Delphi XE修复此问题的消息?
我的实际测试配置如下: test.FailsOnNoChecksExecuted := True; test.FailsOnMemoryLeak := True; test.FailsOnMemoryRecovery := False; test.IgnoreSetUpTearDownLeaks:= True;
以下是示例代码(仅实现部分)。
感谢您的选择!!
更新:我所面临的问题在http://members.optusnet.com.au/mcnabp/Projects/HIDUnit/HIDUnit.html#memoryleakdetection中有文档记录。 但是同样的链接没有提供其他解决方案,除了再次运行相同的测试。
当我的测试用例包含内部字符串时,测试在出现内存泄漏时失败。如果我不关闭DUnit GUI并再次运行相同的测试,则测试会通过。我认为DUnit GUI Testing也会出现相同的问题。我的应用程序中没有泄漏,证明在这些情况下FastMM不会生成泄漏报告。
问题1: 是否有一种方法可以忽略它们而不设置AllowedMemoryLeakSize?
问题2: 我正在使用Delphi 7,是否有关于Delphi XE修复此问题的消息?
我的实际测试配置如下: test.FailsOnNoChecksExecuted := True; test.FailsOnMemoryLeak := True; test.FailsOnMemoryRecovery := False; test.IgnoreSetUpTearDownLeaks:= True;
以下是示例代码(仅实现部分)。
procedure TTest.Setup;
begin
A := 'test';
end;
procedure TTest.TearDown;
begin
// nothing here :)
end;
procedure TTest.Test;
begin
CheckTrue(True);
end;
感谢您的选择!!
更新:我所面临的问题在http://members.optusnet.com.au/mcnabp/Projects/HIDUnit/HIDUnit.html#memoryleakdetection中有文档记录。 但是同样的链接没有提供其他解决方案,除了再次运行相同的测试。