Ho bisogno di testare una classe per determinare se un'azione pertinente ha avuto luogo dato un determinato input. Il codice più o meno così:Come testare unitamente un metodo di annullamento senza argomenti
protected static void receiveInput() {
String command;
boolean b = true;
Scanner scanner = new Scanner(System.in);
while (b) {
command = scanner.next();
switch(command) {
case "first":
System.out.println("First!");
break;
case "second":
System.out.println("Second!");
break;
case "third":
System.out.println("Third!");
break;
default:
System.out.println("\n***** Invalid *****\n");
}
System.out.println("\n");
}
scanner.close();
}
posso probabilmente ottenere una prova di unità abbastanza approfondita se posso in qualche modo controllare la stringa di comando e tenere traccia dell'oggetto scanner. Per qualche ragione, in realtà non mi è permesso iniettare questi due oggetti come argomenti per questo metodo. Quali opzioni ci sono per fare questo test in un modo diverso?
Non è possibile impostare una funzione di ritorno valore di tipo 'stringa' e restituire semplicemente la stringa del caso specifico da verificare? – Adam
Sei in grado di cambiare questo metodo per renderlo più facile da testare unitamente? –
Questo non è un metodo molto semplice per test di unità. Di solito per me, quando collaudo i metodi void, è perché producono una sorta di effetto collaterale o cambiamento di stato. Quindi testerò se quell'effetto collaterale si è verificato correttamente.Sfortunatamente, in questo caso sarà abbastanza difficile testare l'unità senza cambiare il metodo. – JNYRanger