Wie wird der Delphi-DUnit-Test fehlgeschlagen, wenn TSQLConnection.Connected = true?

8

Bei Verwendung von Delphi IDE wird SQLConnection.Connected automatisch auf "true" gesetzt, wenn Feld- oder Tabellenlisten in verschiedenen Eigenschaften ausgefüllt werden.

Da ich nicht mit Connected = true freigeben möchte, muss mein Dunit-Test fehlschlagen, wenn TSQLConnection.Connected in dfm wahr ist.

    
dmajkic 19.01.2009, 11:46
quelle

5 Antworten

4

Ich löse das auf andere Weise. Ich habe ein kleines Dienstprogramm geschrieben, das eine DFM-Datei lädt und nach Eigenschaften sucht, die nicht vorhanden sein sollten. Einschließen der database.connected = true-Werte.

Dies kann geändert werden, um mit geeigneten Eigenschaften zu arbeiten. Ich habe auch den Kern des Codes hier eingefügt.

Um dies wirklich nützlich zu machen, sollten Sie dieses Dienstprogramm in Ihrem Build-Skript verwenden (ich benutze FinalBuilder). Mein Skript beginnt mit dem Schleifen von .dfm-Dateien, entfernt alle diese Eigenschaften und kompiliert dann die Komponententests. Wenn sie bestehen, wird die Hauptanwendung fortgesetzt. Für mich ist dies ein besserer Weg, als einen Komponententest fehlschlagen zu lassen, da Sie von einem garantiert bekannten guten Punkt ausgehen können.

%Vor%     
mj2008 19.01.2009, 12:19
quelle
9

GExperts hat einen "Set Component Properties" -Experten, den wir konfigurieren, um Datenbankverbindungen bei jedem Kompilieren zu schließen. Seitdem haben wir das Problem nicht gehabt.

    
Jozz 19.01.2009 16:45
quelle
5

Sie könnten Ihren eigenen Nachkommen von TSQLConnection schreiben, der seine Connected-Eigenschaft nicht speichert:

%Vor%

und verwenden Sie diese Komponente anstelle von TSqlConnection.

(Das obige ist für TAdoConnection, aber TSQLConnection sollte auch gut funktionieren.)

    
dummzeuch 19.01.2009 15:46
quelle
1

OpenCTF - Component Test Framework für Delphi könnte interessant sein, es erstellt automatisch Komponententests für bestimmte Eigenschaften aller Komponenten in allen Formen / Datamodule. Es ist Open Source und einfach zu bedienen.

"Erste Schritte" Dokument: Ссылка

  

Das OpenCTF-Komponententestframework   hilft, automatische Tests für alle zu erstellen   (visuelle und nicht visuelle) VCL-Komponenten   in einer Delphi-Anwendung. Es basiert   auf dem DUnit-Framework.

Einige Anwendungsbeispiele:

  • erkennen fehlende oder falsche Eigenschaftswerte - z. Schaltflächen ohne zugeordnete Aktionen, DataSources ohne zugeordnetes DataSet
  • erkennt nicht zugeordnete Ereignishandler - z.B. fehlendes OnExecute-Ereignis
  • Überprüfen Sie, ob alle DataSets geöffnet werden können
  • Überprüfen Sie die Tab-Reihenfolge
  • finde unsichtbare Komponenten (z. B. unsichtbare TabSheets, die zur Laufzeit besser versteckt werden sollten)

OpenCTF http://www.mikejustin.com/images/OpenCTF.gif

    
mjn 14.03.2010 16:58
quelle
0

Ein weiterer Ansatz für dieses Problem besteht darin, einen Pre-Commit-Hook in Ihren SCM zu implementieren. Ich benutze TortoiseSVN, und ich habe ähnliche Dinge getan, um zu verhindern, dass sich Dinge einschleichen. Zum Beispiel haben wir eine "Skins" -Bibliothek, die versucht, jedem Formular, das Sie in der IDE öffnen, etwa ein Dutzend Skin-Einheiten hinzuzufügen. (Wir haben einen Registry-Patch, der dieses Verhalten "behebt", aber es wird ab und zu "un-erledigt", wenn ein Entwickler Komponenten neu installiert). Also habe ich eine "Liste verbotener Strings" in einer INI-Datei, die sich in einem SVN-Pre-Commit-Hook befindet.

In unserer Umgebung ist der gesamte Produktionscode auf einer dedizierten "Build-Maschine" aufgebaut. Wenn Code also nicht eingecheckt wird, gelangt er nicht in den Build. Problem gelöst.

    
Chris Thornton 01.11.2011 18:52
quelle

Tags und Links