Visual Studio 2005 e unit test

Dopo circa un mesetto di utilizzo di tecnologia targata Microsoft volevo condividere qualche punto.

Visual Studio 2005 è un gran bell’ IDE, molto integrato, facile da usare, user-friendly e molto potente; C# d’altronde è molto simile a Java come linguazzo OO, con delle feauture molto interessanti.

La prima pecca che ho potuto notare è che non ha nessun framework integrato per fare unit test, e questo è male!!  O meglio ne esiste solo una versione che integra un ambiente per i test unitari (la Team Edition).

L’inizio dello sviluppo è stato molto pittorico: molti “just click next” e poco codice a manina,  e quindi non era una priorità testare unitariamente il codice prodotto dal framework .NET.

In questa ultima settimana fortunatamente avendo preso un pò il controllo degli strumenti e padroneggiando di più gli strati di codice prodotti dal magnifico “maghetto” targato M$, ho ripreso a essere io il protagonista dello sviluppo, e per ovvi motivi mi sono sentito in braghe di tela quando non potevo fare test unitari.

Quindi ho speso una giornata a cercare e valutare la configurazione migliore in Visual Studio 2005 per crearmi un ambiente adatto e confortevole per raggiungere questo obiettivo.

Sono partito da NUnit che è il porting di JUnit per .NET. Bisogna scaricarsi le librerie e poi creare una solution che faccia riferimento a nunit.framework.

Il core di NUnit è molto interessante e assomiglia a quello di JUnit 4 in cui i Test sono evidenziati tramite le assertion; qua invece che le assertion si usano altre strutture che consentono di decorare con dei metadati le classi di Test:

    [TestFixture]
public class BankAccountTest

[SetUp]
public void Init()
{
bankAccount = new BankAccount(“Mazi”);
}

[Test]
public void InitTest()
{
Assert.AreEqual(0.0, bankAccount.Balance);
}

Come si può vedere si usa la direttiva TextFixture per definire una classe di Test, e altri attributi specifici per Test, SetUp, TearDown ecc. ecc.

NUnit non è integrato in Visual Studio, e quindi una volta creata la solution di test (la dll o l’exe) bisogna usare la gui di NUnit standalone per eseguire i test: questo può risultare scomodo per chi è abituato a un ambiente orientato ai test unitare come Eclipse.

Purtroppo nel modo M$ ci sono, oltre a NUnit, altri vari framework di unit test:

  1. CSUnit
  2. Zanebug
  3. MBUnit

Ognuno ha i suoi vantaggi, e ognuno dice di essere il migliore 😀

Per ora proverò l’accoppiata NUnit e TestDriven.Net, diciamo che il desiderata sarebbe avere test unitari e un plugin per Visual Studio integrato in modo da non dover usare un programma esterno per testare, ma fare tasto destro, run test 🙂

Mazi