June 2010 Blog Posts

Convertire una libreria di classi in un progetto mstest

Sto convertendo un progetto da vs 2005 a vs 2010, i test sono stati scritti per MbUnit. Vorrei convertire i progetti che prima erano librerie di classi in progetti di test (mstest) in modo da avere i test integrati nell’ambiente di sviluppo. I test andranno comunque rivisti perché la sintassi cambia da MbUnit a Mstest ma posso migrarli un po' per volta. Vediamo come fare: All’interno di visual studio tasto destro sul progetto che vogliamo convertire “Unload Project” Tasto destro ancora sul progetto scaricato “Edit Project.Name” ...

Usare un framework di mock nei test – Behavior stub

Nel post precedente avevamo visto come creare Stub con RhinoMock, ora vedremo invece come simulare il valore di ritorno di un metodo. Esempio 2 – Valori di ritorno di un metodo Il nostro obiettivo è testare il metodo ApproveOrder, che imposta la proprietà ApprovedBy recuperando l'utente a partire dal id. public class OrderManager { IDataContext context; public OrderManager(IDataContext context) { this.context = context; } public void ApproveOrder(Order order, Int32 idUser) ...

Tecniche di storicizzazione

In tutte le applicazioni soprattutto in quelle enterprise capita di dover storicizzare delle informazioni, esempi classici sono: l’indirizzo di spedizione del cliente in fattura, il salario del dipendente durante gli avanzamenti di carriera, i codici materiale per un ordine. Per risolvere queste problematiche esistono più tecniche che ovviamente portano con loro vantaggi e svantaggi, proviamo a vedere alcune di queste tecniche partendo da dei possibili scenari. - Tecniche di storicizzazione – Attivo - Tecniche di storicizzazione – Copia - Tecniche di storicizzazione – Data - Tecniche di storicizzazione...

Tecniche di storicizzazione - Attivo

Scenario Un ordine viene elaborato dal un dipendente. Quando un dipendente esce dall’organico dell’azienda vogliamo che gli ordini precedentemente elaborati mantengano il riferimento al dipendente. Quando un dipendente esce dall’organico dell’azienda non deve essere più possibile associarlo all’ordine. Possibile soluzione Aggiungiamo al soggetto dipendente una informazione che ci dica se è attivo o meno. Se il dipendente esce dall’organico verrà disabilitato ma continuerà ad esistere e l’associazione con nuovi ordini sarà fatta solo selezionando i dipendenti attivi. Considerazioni Tecnica abbastanza semplice...

Tecniche di storicizzazione – Copia

Scenario Una fattura ha un indirizzo di spedizione. La fattura compresa di indirizzo avendo valore legale non deve variare nel tempo. L’indirizzo del cliente può variare nel tempo. Possibile soluzione Copiamo i dati di spedizione nella fattura. Gli indirizzi sono liberi di essere modificati senza influire sulle fatture già emesse. Considerazioni Sicuramente è una delle tecniche più grezze ma forse anche la più semplice. Più il numero dei campi da storicizzare è alto più la nostra entità diventerà pesante...

Tecniche di storicizzazione - Data

Scenario In un progetto possono lavorare più dipendenti. Ogni dipendente ha una retribuzione, questa può variare nel tempo. Un progetto per essere realizzato ha un budget di ore preventivate per ogni dipendente. Vogliamo poter calcolare il budget in una data specifica anche nel passato per capirne le variazioni. Possibile soluzione Aggiungiamo alle retribuzioni il concetto di validità che viene espresso tramite un range di date. Quando dobbiamo calcolare il budget andiamo a prendere il salario attivo per la data richiesta....

Tecniche di storicizzazione – Dettaglio

Scenario Un ordine è associato ad un cliente. Vogliamo memorizzare tutte le modifiche che vengono effettuate su un cliente. Vogliamo avere le informazioni del cliente al momento della creazione dell’ordine (es Ragione sociale) ma anche avere le informazioni aggiornate ad oggi (es Area). Possibile soluzione Dividiamo il cliente in due tabelle una clienti_tb che conserva i dati immutabili, l’altra clienti_rev_tb che mantiene lo storico di tutte le modifiche apportate sui clienti e tramite il campo isActve indica la revisione attivà. Quando vogliamo creare un...

Usare un framework di mock nei test - Stub

Partiamo con un esempio molto semplice per capire come usare un framework di mock per aiutarci nella creazione di test unitari. Il framework di mock che utilizzeremo è Rhino Mocks nella versione 3.6, è un buon prodotto che viene portato avanti dall’instancabile Oren Eini (Ayende Rahien). Esempio 1 – Creare uno Stub Il nostro obiettivo è testare il metodo SaveOrder che imposta la proprietà Active a true e richiama il metodo IDataContext.Save. public class OrderManager { IDataContext context; public OrderManager(IDataContext context) { ...

Rinominare un campo di un work item

Per rinominare il nome di un campo creato in Tfs possiamo sfruttare l’applicazione witfields. Supponiamo di aver creato un campo “Richiesta da” e volerlo rinominare in “Richiedente”. Il programma a linea di comando witfields.exe che si trova in C:\Programmi\Microsoft Visual Studio 9.0\Common7\IDE (con Tfs 2008), permette di rinominare un campo tramite questa istruzione: witfields.exe rename /s:ServerTfs Elfo.RequestedBy Richiedente Il nome descrittivo del campo Elfo.RequestBy verrà modificato da "Richiesta da" a "Richiedente" in Team Foundation Server. Continuare (S/N)? Alla richiesta di conferma probabilmente per un bug se rispondevo con “S” non...

«June»
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910