使用Delphi IDE时,在填充各种属性的字段或表列表时,它会悄悄地将SQLConnection.Connected更改为“true”。由于我不想发布Connected = true的版本,所以需要在dfm中TSQLConnection.Connected保持true时使我的dunit测试失败。
GExperts有一个“设置组件属性”专家,我们将其配置为在每次编译时关闭数据库连接。自从这样做以来,我们就没有遇到这个问题。
TdzAdoConnection = class(TADOConnection)
published
property Connected stored false;
end;
使用该组件而不是TSqlConnection。
(上述内容适用于TAdoConnection,但TSQLConnection也应该能正常工作。)
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;
OpenCTF - Delphi 组件测试框架可能会很有趣,它可以自动为所有窗体/数据模块中的指定属性创建单元测试。它是开源的且易于使用。
“入门”文档:http://www.habarisoft.com/download/OpenCTFGettingStarted.pdf
OpenCTF 组件测试框架可帮助构建自动测试所有(可视和非可视)Delphi 应用程序中的 VCL 组件。它基于 DUnit 框架。
一些使用示例: