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?