问题描述
|
我在名为“ 0”的旧单元中有几个小功能。
现在,我想重构其中的一些,但我认为最好先编写测试。使用DUnit,我认为没有一门课是不可能的。
因此,我想知道在重构之前如何测试它们?
编辑:
我认为这是不可能的,因为我试图使用“测试用例向导”在Delphi中添加一个测试用例。看到下面的图片,没有任何类和方法,因此我无法创建它。
解决方法
您无法使用向导测试独立功能,但是使用DUnit测试独立功能不是问题。
例
//***** A Standalone function te be tested in a unit far,far away
function Add(v1,v2: Integer): Integer;
...
//***** A testclass to contain the testmethods calling our
// standalone function
TTestAdd = class(TTestcase)
published
procedure AddingComplement_ShouldEqualZero;
procedure AddingNegativeNumbers_ShouldBeLessThanZero
...
end;
implementation
procedure TTestAdd.AddingComplement_ShouldEqualZero;
begin
// Setup,Execute & Verify
CheckEquals(0,Utils.Add(-1,1),\'Complement doesn\'\'t add to zero\');
end;
procedure TTestAdd.AddingNegativeNumbers_ShouldBeLessThanZero
begin
// Setup,Execute & Verify
CheckEquals(-3,-2),\'Add doesn\'\'t add\');
end;
, AFAICT,DUnit不需要将被测代码作为类方法存在。只有测试用例本身必须是类。
编辑:向导只是一种方便。您不必使用它。
, 实际代码需要维护。实际代码中的假设没有充分记录。忘记或从不知道这些假设的人会更改真实的代码。相信测试,不要相信代码。
Real TDD允许您在实现之前创建对象及其方法。无论如何,在编写测试用例之前,您需要一个清晰的模型。
因此,生成对象,添加方法,参数等。可能最好使用UML2,然后为这些对象编写测试用例,然后实现这些对象。之后,运行事件探查器,找出您的代码的真实程度,然后进行重构。
作为一般解决方案,几乎总是最好编写一个工厂对象来实例化和初始化您的对象。您越接近核心功能,这一点就越重要。
为预期的失败和异常编写测试。使用支票以确保。
最后,编写每个测试并观察其失败,然后再编写代码以使其成功。