使用Delphi IDE时,在各种属性中填充字段或表列表时,它将无提示地将SQLConnection.Connected更改为“true”。

由于我不希望使用Connected = true进行发布,因此当dfm中的TSQLConnection.Connected保留为true时,我需要我的dunit测试失败。

最佳答案

我用另一种方式解决了这个问题。我写了一个小工具,可以加载DFM文件,并查找不应该存在的属性。包括database.connected =真值。

可以对其进行修改以使用任何适当的属性。我也将代码的核心放在这里。

为了使它真正有用,您应该在构建脚本中使用此实用程序(我使用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;

关于delphi - TSQLConnection.Connected = true时如何使Delphi DUnit测试失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/457363/

10-09 05:24