Вам не нужно делать их публичными. Защищенный сделает. Затем вы можете подтипить класс для модульного тестирования и открыть защищенные методы. Пример:
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;
Тем не менее, если методы, которые вы хотите использовать для модульного тестирования, работают так тесно с модулем данных, что небезопасно иметь что-либо, кроме частного, тогда вам следует подумать о рефакторинге методов, чтобы отделить код, который требует быть проверенным модулем и кодом, который обращается к внутренностям модуля данных.