我有一个类,我单位测试与DUnit.
它有一些方法的一些公共方法和私有方法.
它有一些方法的一些公共方法和私有方法.
type TAuth = class(TDataModule) private procedure PrivateMethod; public procedure PublicMethod; end;
为了写这个类的单元测试,我必须使所有的方法公开.
解决方法
你不需要让它们公开.受保护的会做.然后,您可以对类进行单元测试的子类型,并表示受保护的方法.例:
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;
然而,如果要单元测试的方法是与数据模块密切相关的事情,除了是私有的,它们是不安全的,那么您应该真正考虑重构方法,以便将需要单元的代码隔离测试和访问数据模块内部的代码.