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.