0

我目前正在尝试创建一个测试过程并将其传递给一个字符串。该函数检查字符串是否相等。问题是,当测试运行时,我在过程中传递的字符串上收到 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的新手,所以如果有什么我遗漏的,请告诉我。请在回复中具体说明。谢谢你。

4

1 回答 1

3

该代码由单元测试运行程序调用。它使用 RTTI 来查找名称以 . 开头的已发布方法'Test'。从表面上看,这似乎是一个 DUnit 测试用例。

运行程序需要一个不接受任何参数的过程,并照此调用该方法。另一方面,您提供一个需要参数的方法。未提供的参数。因此运行时错误。

现在,在您的代码中的某处,您说您正在调用这样的方法:

TestCompareListBoxToFile('Save');

但这不是调用测试的方式。测试由使用 RTTI 的运行程序调用。如果您也尝试调用该函数,那就错了。

您必须像这样声明您的方法:

procedure TestCompareListBoxToFile;

您可能需要返回单元测试框架的文档和示例,并学习如何设计您的测试用例以能够接受参数。事实上,在这样做之前,我建议您直接回到基础,并确保您完全了解运行程序如何发现您的测试然后运行它们。

于 2015-04-07T17:21:47.350 回答