我如何测试函数和过程,因为它们不属于Delphi中的类?

问题描述

| 我在名为“ 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,然后为这些对象编写测试用例,然后实现这些对象。之后,运行事件探查器,找出您的代码的真实程度,然后进行重构。 作为一般解决方案,几乎总是最好编写一个工厂对象来实例化和初始化您的对象。您越接近核心功能,这一点就越重要。 为预期的失败和异常编写测试。使用支票以确保。 最后,编写每个测试并观察其失败,然后再编写代码以使其成功。