首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dataProvider in DUnit Delphi?

dataProvider in DUnit Delphi?
EN

Stack Overflow用户
提问于 2017-02-06 14:48:15
回答 2查看 175关注 0票数 2

如何在Delphi DUnit中为单元测试提供数据)?例如,在PHP中,您可以这样做:

代码语言:javascript
复制
  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']);
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-06 15:13:13

在DUnit中,每个测试用例都必须是没有参数的procedure。因此,不存在通过自定义属性注入参数以测试方法的机制,就像您正在做的那样,PHPUnit。

您应该看看DUnitX,在这里您可以定义如下的测试:

代码语言:javascript
复制
[TestCase('https://helloacm.com')]
[TestCase('https://codingforspeed.com']
procedure TestUrl(const Url: String); 
票数 2
EN

Stack Overflow用户

发布于 2017-02-06 16:48:44

使用Spring4D DUnit扩展,您可以编写类似的东西(查看单元Spring.TestingTests\Source文件夹中的release/1.2分支)。

代码语言:javascript
复制
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的统一测试以获得其他用例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42070576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档