Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   DUnit: FillCombobox testen -> no parent (https://www.delphipraxis.net/184996-dunit-fillcombobox-testen-no-parent.html)

hoika 6. Mai 2015 16:45

DUnit: FillCombobox testen -> no parent
 
Hallo,
ich stehe gerade auf dem Schlauch.

In einem TestCase geht es um den Test einer ComboBoxFüllRoutine (jaja).

Delphi-Quellcode:
procedure FillComboBox(ACB: TComboBox);
begin
  ACB.Items.Clear; // no parent
end;

// Test-Unit

procedure TTestCase.Test_FillComboBox;
var
  CB: TComboBox;
begin
  CB := TComboBox.Create(nil);
  CB.Parent := ???

  FillComboBox(CB)
end;
Was gebe ich als Parent an ?
Application.MainForm hat schon mal nicht geklappt.


PS: Ist nicht meine Routine, ich muss sie nur Testen ...


Danke

Heiko

mjustin 6. Mai 2015 16:58

AW: DUnit: FillCombobox testen -> no parent
 
Einfache Lösung: ein leeres Form definieren, und seine Unit der Testcase-Unit hinzufügen. Im Setup eine Instanz des Forms erzeugen, und einer Instanzvariable zuweisen (MyEmptyForm := TEmptyForm.Create;), diese Forminstanz kann dann im Testfall als Owner angegeben werden:

CB := TComboBox.Create(MyEmptyForm);

Dann muss der Parent nicht explizit angegeben werden. p.s. Im TearDown das Form wieder freigeben.

Union 6. Mai 2015 17:06

AW: DUnit: FillCombobox testen -> no parent
 
Du kanst ja ein Dummy-Fenster erzeugen:

Delphi-Quellcode:
var
  CB : TComboBox;
  WN : TForm;
begin
  WN := TForm.Create(nil);
  try
    CB := TComboBox.CreateParented(WN.Handle);
    CB.Name := 'Combobox1234';
    CB.Items.Clear;
  finally
    WN.Free;
  end;
end;

Stevie 6. Mai 2015 17:10

AW: DUnit: FillCombobox testen -> no parent
 
Viel anders als schon vorgeschlagen wurde, würd ich es auch nicht machen.

Mich würde noch interessieren, ob noch auf andere Member der TComboBox zugegriffen wird,
oder nur auf Items. Dann wäre nämlich ein Refactoring angebracht (dass du nicht wirklich
glücklich mit dem Code bist, meine ich an deinen Anmerkungen zu erkennen).
Außerdem würd mich interessieren, was du denn in dem Test abprüfen willst.

hoika 6. Mai 2015 21:27

AW: DUnit: FillCombobox testen -> no parent
 
Hallo,

danke für die Antworten.
Das mit dem Dummy-Form klingt gut.

Ich hatte jetzt erst mal die TCombobox durch TStrings getauscht
und den Code entsprechend geändert.
Das klappt.

Danke

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz