La release beta1 di Visual Studio 2005, per quanto nominata "Enterprise Architect" di... "Enterprise" aveva ben poco, visto che l'unica feature interessante da questo punto di vista era il class designer. Niente male, ma.. dei Team Systems (a.k.a. Burton a.k.a Enterprise Tools) non v'era traccia. Peccato, perchè ero molto curioso di poter toccare con mano il toolkit di unit testing che mi era stato mostrato ad Aprile nel corso dello MVP Summit a Redmond. In realtà, per impossessarmi di una build sufficientemente aggiornata ho dovuto attendere fino a Luglio, ma il "solito" NDA mi impediva di pubblicare qualche "primizia". Ebbene, ormai da una decina di giorni "quella" build è stata rilasciata, e possiamo quindi chiacchierare a piacere.
Una doverosa premessa: chi ha utilizzato NUnit troverà delle evidenti similitudini architetturali con il toolkit offero da VS2005. Da questo punto di vista, l'ingresso in Microsoft di James Newkirk (leader del suddetto progetto) non poteva probabilmente portare ad un risultato differente. Oltre a straordinare similitudini, abbiamo anche qualche significativa differenza:
- NUnit è un toolkit indipendente, mentre il toolkit MS è proprio di Visual Studio e non del framework .NET in quanto tale (il root namespace è infatti Microsoft.VisualStudio.QualityTools.UnitTesting.Framework). Questo conferma (come precedentemente affermato) che vi potranno essere pacchettizzazioni di VS2005 sprovviste di questa funzionalità (speriamo si riveli un timore infondato).
- Il toolkit MS integra funzionalità di reporting della code coverage effettiva prodotta dai test. Questa feature, assente in NUnit, è importante perchè permette di capire (ad esempio) in che percentuale il nostro codice sia stato "sondato" dai test
Tutto ciò premesso, chi ha utilizzato NUnit non faticherà ad adottare il toolkit di VS2005, visto che siste un mapping diretto tra le classi attributo offerte dalle due implementazioni:
NUnit |
VS2005 |
TestFixtureAttribute |
TestClassAttribute |
SetupAttribute |
TestInitializeAttribute |
TearDownAttribute |
TestCleanUpAttribute |
TestAttribute |
TestMethodAttribute |
L'attributo ExpectedExceptionAttribute e la classe Assert non sono invece stati vittime della "sindrome da renaming". Ciò che più si apprezza del toolkit MS è l'ottima integrazione (e vorrei ben vedere!) con l'IDE: nulla a che vedere con gli "Attach Process" dai tempi chilometrici di NUnit. Con VS2005 il menu di popup disponibile nell'editor di codice presenta una voce "Create Tests" la quale avvia un wizard che permette di selezionare per quali porzioni di solution (es: classi, metodi) creare uno scheletro di test, nonchè di specificare se le classi di test debbano essere implementate all'interno del progetto (bleah!) o mediante un assembly separato (come è giusto). Se vi interessa l'argomento, vi consiglio di sottoscrivere il blog di James: io intanto vado a dormire, visto che si è fatto tardi...