Я решаю это по-другому. Я написал небольшую утилиту, которая загружает файл DFM и ищет свойства, которые не должны присутствовать. Включая database.connected = true values.
Это можно изменить для работы с любыми подходящими свойствами. Я также поместил здесь ядро кода.
Чтобы сделать это действительно полезным, вы должны использовать эту утилиту в своем скрипте сборки (я использую FinalBuilder). Мой сценарий начинается с зацикливания файлов .dfm, удаления всех этих свойств, а затем компилируется и запускает модульные тесты. Если они проходят, то он продолжает строить основное приложение. Для меня это лучший способ, чем провал модульного теста, так как вы можете начать с гарантированно известного положительного момента.
nState := 0;
bFound := False;
for nFileLoop := 0 to memoFile.Lines.Count - 1 do
begin
szLine := memoFile.Lines[nFileLoop];
case nState of //
0:
begin
if(0 <> Pos('TADOConnection', szLine)) then
begin
szSeeking := 'Connected';
nState := 1;
end
else if(0 <> Pos('TADOTable', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TADOQuery', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TDBISAMTable', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TDBISAMDatabase', szLine)) then
begin
szSeeking := 'Connected';
nState := 1;
end
else if(0 <> Pos('TDBISAMSession', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TDBISAMQuery', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end;
end;
1 :
begin
bFound := True;
if(0 <> Pos('end', szLine)) then
begin
nState := 0;
end
else if(0 <> Pos(szSeeking, szLine)) then
begin
nPos := Pos('=', szLine);
if nPos > 0 then
begin
memoFile.Lines[nFileLoop] := Copy(szLine, 1, nPos) + ' False';
end;
end;
end;
end; // case
end;