AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CommandLine zur Laufzeit setzen

Ein Thema von TigerLilly · begonnen am 3. Mär 2020 · letzter Beitrag vom 3. Mär 2020
Antwort Antwort
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#1

CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 08:46
Delphi-Version: 5
Ich habe eine Klasse, die CmdLine auswertet. Um die Klasse zu testen, brauche ich geeignete Testfälle. Ich würde daher gern die CmdLine vor den Tests vom Programm selber setzen.

Code:
CmdLine:=Application.exename + ' /r=demo /s=abc';
Geht das überhaupt?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 09:03
Verstehe ich das richtig, Du möchtest die Unit-Tests automatisch laufen lassen, vor Begin
möchtest Du Test-Parameter (manuell) setzen.
Kannst Du die Parameter nicht im Test-Setup setzen?
Vielleicht ist das ein Ansatz? -> https://www.delphipraxis.net/203415-...parameter.html

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 09:12
Nicht wirklich, aber trotzdem danke dafür.

Ich kann über Run/Parameter die CmdLine setzen, oder ich starte die Tests über Batchjobs, aber besser gefallen würde mir, wenn ich die CmdLine im Code ändern könnte.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 09:15
.. dann willst Du das Programm testen (white box testing) und nicht nur die cmdLine Parser Klasse.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.596 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 09:31
Ich habe eine Klasse, die CmdLine auswertet. Um die Klasse zu testen, brauche ich geeignete Testfälle. Ich würde daher gern die CmdLine vor den Tests vom Programm selber setzen.

Code:
CmdLine:=Application.exename + ' /r=demo /s=abc';
Geht das überhaupt?
Nein, aber das Auslesen der CmdLine ist doch der triviale Teil, testen willst Du doch die Auswertung. Also ändere Deinen Code so, dass Du die CmdLine als Parameter übergibst und teste das.
Thomas Mueller
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 10:06
aber das Auslesen der CmdLine ist doch der triviale Teil, testen willst Du doch die Auswertung. Also ändere Deinen Code so, dass Du die CmdLine als Parameter übergibst und teste das.
Ja, das ist der Plan B.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: CommandLine zur Laufzeit setzen

  Alt 3. Mär 2020, 10:12
Ich habe eine Klasse, die CmdLine auswertet.
Wird wirklich die CmdLine ausgewertet oder doch eher ParamStr() verwendet?

Wie dem auch sei, Du musst das Auslesen der CmdLine von der Auswertung trennen.
a) Du könntest den Code der Auswertung so ändern, dass er nicht direkt ParamStr abfragt sondern z.B. ein Array mit den Params bekommt. Dann kannst du im Tests diese Array abfüllen. Im Produktivcode wird das Array halt mit ParamStr abgefüllt, was Du dann nicht testen kansnt.
b) Du machste eine neue unit die du bei uses aufführst. In diese unit definierst Du ParamStr und ParamCount neu, welche dann jeweils auf die orginalen Param-Methoden zugreifen oder Testdaten liefern.
Ich habe mal

Ich selber habe mal den Parser von http://www.finalbuilder.com benutzt. Der macht intern auch die Trennung.
Leider ist die Methode "function TCommandLineParser.Parse(const values: TStrings): ICommandLineParseResult;" nicht public, liese sich weil Sourcen alle da leicht ändern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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