Nei progetti più grandi, spesso può esserci un gruppo di test che testano la funzionalità delle classi correlate. Questi test spesso condividono molte funzionalità di installazione e preparazione.
Quello che succede è che per questi casi di test viene definita una classe base in modo che possano condividere campi istanza e funzionalità comuni. Questo porta a problemi quando un test utilizza molte funzionalità presenti in più classi.
Sarebbe possibile utilizzare qualche forma di composizione per questo tipo di riutilizzo del codice?
Lasciatemi fare un esempio concreto. Ho alcune classi che possono "scrivere" un elenco di transazioni, definito dall'interfaccia "TransactionWriter". Le implementazioni concrete sono "FileTransactionWriter" e "ConsoleTransactionWriter".
Entrambe le classi di test per queste implementazioni dovrebbero impostare transazioni con dati arbitrari. Questo codice verrebbe duplicato in entrambe le classi se non estratto in una classe di test di base. Ma lo stesso obiettivo può essere raggiunto con la composizione?