小编Mat*_*erg的帖子

我可以在DUnit中编写'参数化'测试吗?

我正在使用DUnit来测试Delphi库.我有时会遇到一些情况,我会编写几个非常相似的测试来检查函数的多个输入.

有没有办法在DUnit中编写(类似的东西)参数化测试?例如,为适当的测试程序指定输入和预期输出,然后运行测试套件并获得有关多次运行测试失败的反馈?

(编辑:一个例子)

例如,假设我有两个这样的测试:

procedure TestMyCode_WithInput2_Returns4();
var
  Sut: TMyClass;
  Result: Integer;
begin
  // Arrange:
  Sut := TMyClass.Create;

  // Act:
  Result := sut.DoStuff(2);

  // Assert
  CheckEquals(4, Result);
end;

procedure TestMyCode_WithInput3_Returns9();
var
  Sut: TMyClass;
  Result: Integer;
begin
  // Arrange:
  Sut := TMyClass.Create;

  // Act:
  Result := sut.DoStuff(3);

  // Assert
  CheckEquals(9, Result);
end;
Run Code Online (Sandbox Code Playgroud)

我可能会有更多的这些测试做同样的事情,但有不同的输入和期望.我不想将它们合并到一个测试中,因为我希望它们能够独立通过或失败.

delphi dunit delphi-xe parameterized-unit-test

22
推荐指数
3
解决办法
2399
查看次数

打字稿中是否有用于静态代码分析的好工具?

我们一直在寻找测量TypeScript代码质量的好工具.主要是,我们感兴趣的是测量Cyclomatic Complexity,LCOM,不稳定性和类似指标.用于可视化模块之间的依赖关系的工具也很不错.

一种"NDepend for typescript"会很棒 - 但是我们找不到类似的东西......

有人能指出我们提供某些此类功能的工具的方向吗?

dependencies metrics static-analysis code-metrics typescript

15
推荐指数
2
解决办法
7927
查看次数

如何在Delphi中将泛型转换为Variant

我有一个Delphi泛型类,它使用泛型类型的参数公开一个函数.在这个函数中,我需要将泛型类型的实例传递给另一个期望Variant类型的对象.与此类似:

type
  IMyInterface = interface
    DoStuff(Value: Variant);
  end;      

  TMyClass<T> = class
    FMyIntf: IMyInterface
    procedure DoStuff(SomeValue: T);
  end;

[...]

procedure MyClass<T>.DoStuff(SomeValue: T);
begin
  FMyIntf.DoStuff((*convert SomeValue to Variant here*));
end;
Run Code Online (Sandbox Code Playgroud)

我尝试使用Rtti.TValue.From(SomeValue).AsVariant.这适用于整体类型,但对布尔人来说却是爆炸性的.我不太明白为什么,因为通常我能够为Variant分配一个布尔值...

有没有更好的方法进行此转换?我只需要它用于简单的内置类型(不包括枚举和记录)

delphi generics rtti variant delphi-xe

12
推荐指数
1
解决办法
3399
查看次数

我可以在Delphi中将msxml.IXMLDOMNode转换为XmlIntf.IXMLNode吗?

我已经将som xml读入msxml.IXMLDOMDocument对象.但是,我正在使用的API中有一个实用工具方法,我想调用它,但它需要一个XmlIntf.IXMLNode作为参数.

有没有一种简单的方法将IXMLDOMNode实例从我的文档转换为IXMLNode,所以我可以将它传递给方法而无需将xml加载到TXmlDocument对象中?

目前我已经实现了这个解决方法:

function ConvertNode(const Node: IXMLDOMNode): IXMLNode;
var
  Document: IXMLDocument;
begin
  Document := NewXMLDocument;
  Document.LoadFromXML(Node.xml);
  Result := Document.DocumentElement;
end;
Run Code Online (Sandbox Code Playgroud)

xml delphi msxml delphi-xe

11
推荐指数
1
解决办法
3025
查看次数