检查单元测试中的私有字段

时间:2014-02-02 09:13:52

标签: delphi unit-testing

我有以下界面和类

interface
....
  MyInterface = interface
    ['{079729DE-3E8C-4C1B-80AD-114F0A4CD04A}']
    function MyFunction : integer;
    procedure MyProcedure;
  end;

  TMyClass = class (TInterfacedObject, MyInterface)
  private
    FMyValue : integer;
  public
    function MyFunction : integer;
    procedure MyProcedure;
  end;

implementation
.....
function TMyClass.MyFunction: integer;
var
  aResult : integer;
begin
  { here the value of AResult is changed}
  result := aResult;
end;

procedure TMyClass.MyProcedure;
var
  aValue : integer;
begin
  { here the value of FMyValue is changed}
  { here the value of aValue is changed}
end;

我可以通过支票(MyFunction)轻松查看MyFunction=...的结果,但我不知道如何在最后检查FMyValyeaValue的值程序。

我宁愿避免在接口和类中添加额外的函数,它会检索FMyValueaValue的值,因为它仅用于测试而不用于生产。

2 个答案:

答案 0 :(得分:1)

您不想检查私有成员和本地变量的值。它们不是外部可见界面的一部分,因此它们的价值无关紧要。

如果您担心这些值,那么您的代码架构设计不正确。适当的解决方案当然是重新设计代码。

当然,您可以将私有字段设为public,也可以通过out参数返回本地变量。但你不想这样做,是吗?

答案 1 :(得分:0)

为了能够在不添加getter的情况下测试FMyValue,您可以将其设为受保护而非私有。

在测试中,您可以添加一个可以访问此值的派生类,以便您进行检查。