[英]Delphi pass string to procedure gets an access violation error
我目前正在嘗試創建一個測試過程並將其傳遞給字符串。 然后該函數檢查字符串是否相等。 問題是,當測試運行時,我在過程中傳遞的字符串上收到EAccessViolation的訪問沖突錯誤。 我知道這是一個內存聲明問題,但是我不確定如何解決它。
這是我的代碼:
宣布
TestTForm1 = class(TTestCase)
strict private
FForm1: TForm1;
public
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestCompareListBoxToFile(Method : String);
end;
呼叫
TestCompareListBoxToFile('Save');
程序
procedure TestTForm1.TestCompareListBoxToFile(Method : String);
begin
Check('Save' = Method,'they dont match');
end;
我是delphi的新手,所以如果我缺少什么,請告訴我。 請在回復中具體說明。 謝謝。
該代碼由單元測試運行程序調用。 它使用RTTI查找名稱以'Test'
開頭的已發布方法。 從表面上看,這似乎是DUnit測試用例。
運行程序期望一個不接受任何參數的過程,並這樣調用該方法。 另一方面,您提供一種確實需要參數的方法。 未提供的參數。 因此,運行時錯誤。
現在,在代碼中的某處,您說您正在調用這樣的方法:
TestCompareListBoxToFile('Save');
但這不是調用測試的方式。 運行程序使用RTTI調用測試以進行測試。 如果您也嘗試調用該函數,那是錯誤的。
您必須像這樣聲明您的方法:
procedure TestCompareListBoxToFile;
您可能需要返回單元測試框架的文檔和示例,並學習如何設計測試用例以能夠接受參數。 實際上,甚至在這樣做之前,我建議您直接回到基礎知識,並確保您完全了解跑步者如何發現您的測試然后進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.