Sto lavorando su una base di codice legacy e ho bisogno di trovare un modo per scrivere test unitari per questo progetto.
Il progetto ha un'architettura a tre livelli ( UI-Biz-DAL
come li chiamiamo) e DAL
è totalmente implementato usando ADO.Net
e Typed-Datasets
ed è pieno di SQL Scripts
.
Le nostre classi Biz
hanno metodi che sono responsabili della realizzazione di business logic e dipendono da altre classi helper e classi DAL
.
So che posso usare DI
per iniettare queste classi nelle mie classi Biz
, ma penso che dovrei cambiare un sacco di codice. Ecco una soluzione a cui posso pensare:
Esiste questa classe TestContext
che funge da contenitore e può contenere oggetti fittizi per i test ma non ha nulla quando si tratta di eseguire il codice effettivo in modo da poter utilizzare invece oggetti reali, ecco un esempio:
var dal=TestContext.Current.Resolve<IMyDAL>(@default:new MyDal());
come puoi vedere Il metodo Resolve accetta un argomento di tipo IMyDAL
che verrà utilizzato in caso di non esecuzione dei nostri test.
Prima mi piacerebbe sapere cosa ne pensi di questa soluzione
Secondo Sto ancora pensando a un modo per testare gli script SQL che sono codificati nel nostro codice base. Come posso testarli?