Skip to content

8. Appendici

8.1. Dove posso trovare Spring?

Il sito web principale di Spring è [http://www.springframework.org/]. Questo è il sito per la versione Java. La versione .NET, attualmente in fase di sviluppo (aprile 2005), è disponibile all'indirizzo [http://www.springframework.net/].

Image

Il sito per il download si trova su [SourceForge]:

Image

Una volta scaricato il file zip sopra indicato, decomprimilo:

Image

In questo documento abbiamo utilizzato solo il contenuto della cartella [bin]:

Image

In un progetto Visual Studio che utilizza Spring, è necessario eseguire sempre due operazioni:

  • inserire i file sopra indicati nella cartella [bin] del progetto
  • aggiungere un riferimento all'assembly [Spring.Core.dll] al progetto

8.2. Dove si trova NUnit?

Il sito web principale di NUnit è [http://www.nunit.org/]. La versione disponibile ad aprile 2005 è la 2.2.0:

Image

Scarica questa versione e installala. L'installazione crea una cartella contenente l'interfaccia grafica di test:

La parte interessante si trova nella cartella [bin]:

Image

Image

La freccia sopra indica l'utilità di test grafica. L'installazione ha anche aggiunto nuovi elementi al repository degli assembly di Visual Studio, che esploreremo ora.

Creiamo il seguente progetto Visual Studio:

La classe sottoposta a test si trova in [Person.vb]:

Image

Public Class Personne

    ' private fields
    Private _nom As String
    Private _age As Integer

    ' default builder
    Public Sub New()
    End Sub

    ' properties associated with private fields
    Public Property nom() As String
        Get
            Return _nom
        End Get
        Set(ByVal Value As String)
            _nom = Value
        End Set
    End Property

    Public Property age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal Value As Integer)
            _age = Value
        End Set
    End Property

    ' identity chain
    Public Overrides Function tostring() As String
        Return String.Format("[{0},{1}]", nom, age)
    End Function

    ' init method
    Public Sub init()
        Console.WriteLine("init personne {0}", Me.ToString)
    End Sub

    ' close method
    Public Sub close()
        Console.WriteLine("destroy personne {0}", Me.ToString)
    End Sub

End Class

La classe di test si trova in [NunitTestPersonne-1.vb]:

Imports System
Imports NUnit.Framework

<TestFixture()> _
 Public Class NunitTestPersonne

    ' object tested
    Private personne1 As Personne

    <SetUp()> _
    Public Sub init()
        ' create an instance of Person
        personne1 = New Personne
        ' log
        Console.WriteLine("setup test")
    End Sub

    <Test()> _
    Public Sub demo()
        ' log screen
        Console.WriteLine("début test")
        ' init person1
        With personne1
            .nom = "paul"
            .age = 10
        End With
        ' tests
        Assert.AreEqual("paul", personne1.nom)
        Assert.AreEqual(10, personne1.age)
        ' log screen
        Console.WriteLine("fin test")
    End Sub

    <TearDown()> _
    Public Sub destroy()
        ' follow-up
        Console.WriteLine("teardown test")
    End Sub

End Class

Alcune cose da notare:

  • ai metodi vengono assegnati attributi quali <Setup()>, <TearDown()>, ...
  • affinché questi attributi vengano riconosciuti, devono verificarsi le seguenti condizioni:
    • il progetto fa riferimento all'assembly [nunit.framework.dll]
    • la classe di test importa lo spazio dei nomi [NUnit.Framework]

Il riferimento viene aggiunto facendo clic con il tasto destro del mouse su [Riferimenti] in Esplora soluzioni:

Image

L'assembly [nunit.framework.dll] dovrebbe essere presente nell'elenco se l'installazione di [NUnit] è andata a buon fine. È sufficiente fare doppio clic sull'assembly per aggiungerlo al progetto:

Image

Una volta fatto ciò, la classe di test [NunitTestPersonne] deve importare lo spazio dei nomi [NUnit.Framework]:

Imports NUnit.Framework

Gli attributi della classe di test [NunitTestPersonne] dovrebbero quindi essere riconosciuti.

  • L'attributo <Test()> indica un metodo da testare
  • L'attributo <Setup()> indica il metodo da eseguire prima di ogni metodo sottoposto a test
  • L'attributo <TearDown()> indica il metodo da eseguire dopo ogni metodo sottoposto a test
  • Il metodo Assert.AreEqual consente di verificare l'uguaglianza di due entità. Esistono molti altri metodi del tipo Assert.xx.
  • L'utilità NUnit interrompe l'esecuzione di un metodo testato non appena un metodo [Assert] fallisce e visualizza un messaggio di errore. In caso contrario, visualizza un messaggio di successo.

Configuriamo il nostro progetto per generare una DLL:

Image

La DLL generata si chiamerà [nunit-demos-1.dll] e verrà collocata per impostazione predefinita nella cartella [bin] del progetto. Compiliamo il nostro progetto. Nella cartella [bin] otteniamo quanto segue:

Image

Ora avviamo l'utilità di test grafica Nunit. Ricordiamo che si trova in <Nunit>\bin e si chiama [nunit-gui.exe]. <Nunit> si riferisce alla cartella di installazione [Nunit]. Otteniamo la seguente interfaccia:

Image

Utilizziamo l'opzione di menu [File/Open] per caricare la DLL [nunit-demos-1.dll] dal nostro progetto:

Image

[Nunit] è in grado di rilevare automaticamente le classi di test contenute nella DLL caricata. In questo caso, individua la classe [NunitTestPersonne]. Visualizza quindi tutti i metodi della classe che presentano l'attributo <Test()>. Il pulsante [Esegui] consente di eseguire i test sull'oggetto selezionato. Se si tratta della classe [NunitTestPersonne], vengono testati tutti i metodi visualizzati. È possibile testare un metodo specifico selezionandolo e facendo clic su [Run]. Eseguiamo la classe:

Image

Un test riuscito su un metodo è indicato da un punto verde accanto al metodo nella finestra di sinistra. Un test fallito è indicato da un punto rosso.

La finestra [Console.Out] sulla destra mostra l'output sullo schermo prodotto dai metodi testati. In questo caso, volevamo seguire l'andamento di un test:

1
2
3
4
setup test
test start
end of test
test teardown
  • La riga 1 mostra che il metodo con attributo <Setup()> viene eseguito prima del test
  • Le righe 2–3 sono generate dal metodo [demo] sottoposto a test (vedi il codice sopra)
  • La riga 4 mostra che il metodo dell'attributo <TearDown()> viene eseguito dopo il test