如何在Delphi DUnit中为单元测试提供数据)?例如,在PHP中,您可以这样做:
public function URLProvider() {
return [
["https://helloacm.com"],
["https://codingforspeed.com"]
];
}
/**
* @dataProvider URLProvider
*/
public function test_url($url) {
$data = file_get_contents("$this->API?url=$url");
$result = json_decode($data, true);
$this->assertEquals(true, $result['result']);
$this->assertEquals(200, $result['code']);
}发布于 2017-02-06 15:13:13
在DUnit中,每个测试用例都必须是没有参数的procedure。因此,不存在通过自定义属性注入参数以测试方法的机制,就像您正在做的那样,PHPUnit。
您应该看看DUnitX,在这里您可以定义如下的测试:
[TestCase('https://helloacm.com')]
[TestCase('https://codingforspeed.com']
procedure TestUrl(const Url: String); 发布于 2017-02-06 16:48:44
使用Spring4D DUnit扩展,您可以编写类似的东西(查看单元Spring.Testing的Tests\Source文件夹中的release/1.2分支)。
program Tests;
uses
Spring.Testing,
TestInsight.DUnit;
type
TUrlTests = class(TTestCase)
public
class function UrlProvider: TArray<string>; static;
published
[TestCaseSource('UrlProvider')]
procedure TestUrl(const url: string);
end;
{ TUrlTests }
procedure TUrlTests.TestUrl(const url: string);
begin
// do whatever
end;
class function TUrlTests.UrlProvider: TArray<string>;
begin
Result := ['https://helloacm.com', 'https://codingforspeed.com'];
end;
begin
TUrlTests.Register;
RunRegisteredTests;
end.可以将名称传递给同一Testcase类中的方法,也可以指定另一个类--该方法本身必须是一个公共静态类函数。然后,扩展将为传递的每个参数创建不同的测试用例。您可以检查Spring4D的统一测试以获得其他用例。
https://stackoverflow.com/questions/42070576
复制相似问题