我正在使用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)
我可能会有更多的这些测试做同样的事情,但有不同的输入和期望.我不想将它们合并到一个测试中,因为我希望它们能够独立通过或失败.
我们一直在寻找测量TypeScript代码质量的好工具.主要是,我们感兴趣的是测量Cyclomatic Complexity,LCOM,不稳定性和类似指标.用于可视化模块之间的依赖关系的工具也很不错.
一种"NDepend for typescript"会很棒 - 但是我们找不到类似的东西......
有人能指出我们提供某些此类功能的工具的方向吗?
dependencies metrics static-analysis code-metrics typescript
我有一个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分配一个布尔值...
有没有更好的方法进行此转换?我只需要它用于简单的内置类型(不包括枚举和记录)
我已经将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) delphi ×3
delphi-xe ×3
code-metrics ×1
dependencies ×1
dunit ×1
generics ×1
metrics ×1
msxml ×1
rtti ×1
typescript ×1
variant ×1
xml ×1