DUnit Delphi中的dataProvider?

时间:2017-02-06 14:48:15

标签: unit-testing delphi

如何为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']);
  }

2 个答案:

答案 0 :(得分:3)

使用Spring4D DUnit扩展,您可以编写类似的东西(查看单位release/1.2的{​​{1}}文件夹中的Tests\Source分支。)

Spring.Testing

您可以将名称传递给同一Testcase类中的方法,也可以指定另一个类 - 方法本身必须是公共静态类函数。然后,扩展将为传递的每个参数创建不同的测试用例。您可以查看Spring4D的Unittests以了解其他用例。

答案 1 :(得分:2)

在DUnit中,每个测试用例必须是没有参数的procedure。因此,不存在通过custom attributes注入参数来测试方法的机制,就像你正在使用PHPUnit一样。

你应该看一下DUnitX而不是你可以定义这样的测试:

[TestCase('https://helloacm.com')]
[TestCase('https://codingforspeed.com']
procedure TestUrl(const Url: String);