我有一个类,正在使用 DUnit 对其进行单元测试。 它有许多方法,一些公共(public)方法和私有(private)方法。
type
TAuth = class(TDataModule)
private
procedure PrivateMethod;
public
procedure PublicMethod;
end;
为了为此类编写单元测试,我必须公开所有方法。
是否有不同的方法来声明私有(private)方法,以便我仍然可以测试它们,但它们不是公开的?
最佳答案
您不需要将它们公开。 protected 就可以了。然后,您可以对类进行子类型化以进行单元测试并显示 protected 方法。示例:
type
TAuth = class(TDataModule)
protected
procedure MethodIWantToUnitTest;
public
procedure PublicMethod;
end;
现在您可以为单元测试创建子类型:
interface
uses
TestFramework, Classes, AuthDM;
type
// Test methods for class TAuthDM
TestAuthDM = class(TTestCase)
// stuff
end;
TAuthDMTester = class(TAuthDM)
public
procedure MethodIWantToUnitTestMadePublic;
end;
implementation
procedure TAuthDMTester.MethodIWantToUnitTestMadePublic;
begin
MethodIWantToUnitTest;
end;
但是,如果您想要进行单元测试的方法与数据模块的关系如此密切,以至于除了私有(private)之外,其他任何东西都是不安全的,那么您确实应该考虑重构这些方法,以便隔离需要的代码要进行单元测试以及访问数据模块内部的代码。
关于delphi - 如何使用 DUnit 测试私有(private)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422379/