Ho una classe DataImport
con solo due metodi pubblici
public void fromStream(InputStream inputStream);
public ImportCommand getImportCommand();
Quando eseguo il test, invio alcuni dati di test al metodo fromStream
dataImport.fromStream(some stream with data...)
Solo come testare il risultato di questo metodo è ottenere il ImportCommand
da getImportCommand
e testare se questo oggetto si trova nello stato in base all'input fornito.
Ma cosa succede se ImportCommand
ha un solo metodo?
public ImportResult execute();
Potrei testare ImportResult
(dopo aver richiamato execute()
che implicherebbe alcuni mock e impostazioni aggiuntive) perché ha qualche stato esposto. Ma in questo modo sto testando ImportCommand
e la classe DataImport
in un test di unità che non mi sembra giusto.
Ma esporre lo stato interiore delle classi che sto testando o accedere ai loro campi / metodi privati non è una buona cosa.
Questo significa che il mio design non è ok (come dovrei cambiarlo) o c'è un modo per risolvere questa situazione?
Contenuti correlati: anti-pattern TDD su SO