Ich habe eine Konsolenanwendung geschrieben, die auf die Benutzer-char-Eingabe wartet.automatisches Testen der String-Processing-Funktion
Anwendung hat die Funktion:
typedef char *ProcessedDataType;
extern ProcessedDataType askUserInput(void){
int i = getchar();
ProcessedDataType local_var = userInputProcessed(i);
return ProcessedDataType;
}
static ProcessedDataType userInputProcessed(int i){
...
return PocessedDataType;
}
Nun würde ich diese Funktion für mehrere Eingänge testen möchten. Wo also normalerweise der Cursor für Benutzereingaben blinkt, werden nun automatisch Einträge aus einer Datei zurückgegeben, die die Auswahlbuchstaben enthält. Dies würde dann gegen das bekannte Ergebnis geltend gemacht werden.
runTest{
// when console gets input 'A'
ProcessedDataType local_var = askUserInput();
assert('ProcessedA' == local_var); }
// when console gets input 'B'
ProcessedDataType local_var = askUserInput();
assert('ProcessedB' == local_var); }
// when console gets input 'C'
ProcessedDataType local_var = askUserInput();
assert('ProcessedC' == local_var); }
Wie stelle ich beim Testen die gleichen String-Parameter für diese Funktion bereit? Wie kann ich ‚Futtermittel‘ die Konsole die Eingänge A, B, C, etc ...
Ich will nicht Präprozessoren verwenden, wie hier: How to unit test c functions involving IO?
Wie wird 'getchar' 9 Zeichen erhalten? – aschepler
sehr guter Punkt – hewi
'Return ProcessedDataType;' WTF? Bitte liefern Sie kompilierbaren Code. Und was ist 'assert ('ProcessedA' == local_var); Bitte posten Sie das [Minimal, Complete und Verifable Beispiel] (http://stackoverflow.com/help/mcve), das zeigt, was Sie versucht haben, nicht irgendeine Fantasie. –