Skip to content

8. Annexes

8.1. Où trouver Spring ?

Le site principal de Spring est [http://www.springframework.org/]. C'est le site de la version Java. La version .NET en cours de développement (avril 2005) est à l'url [http://www.springframework.net/].

Image

Le site de téléchargement est chez [SourceForge] :

Image

Une fois le zip ci-dessus récupéré, le décompresser :

Image

Dans ce document, nous n'avons utilisé que le contenu du dossier [bin] :

Image

Dans un projets Visual Studio utisant Spring, il faut faire systématiquement deux choses :

  • mettre les fichiers ci-dessus dans le dossier [bin] du projet
  • ajouter au projet une référence à l'assembly [Spring.Core.dll]

8.2. Où trouver Nunit ?

Le site principal de Nunit est [http://www.nunit.org/]. La version disponible en avril 2005 est la 2.2.0 :

Image

Téléchargez cette version et installez la. L'installation crée un dossier où on trouvera la version graphique de test :

Ce qui est intéressant se trouve dans le dossier [bin] :

Image

Image

La flèche ci-dessus désigne l'utilitaire graphique de test. L'installation a également ajouté de nouveaux éléments au référentiel d'assemblages de Visual Studio que nous allons découvrir maintenant.

Créons le projet Visual Studio suivant :

La classe testée est dans [Personne.vb] :

Image

Public Class Personne

    ' champs privés
    Private _nom As String
    Private _age As Integer

    ' constructeur par défaut
    Public Sub New()
    End Sub

    ' propriétés associées aux champs privés
    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

    ' chaîne d'identité
    Public Overrides Function tostring() As String
        Return String.Format("[{0},{1}]", nom, age)
    End Function

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

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

End Class

La classe de test est dans [NunitTestPersonne-1.vb] :

Imports System
Imports NUnit.Framework

<TestFixture()> _
 Public Class NunitTestPersonne

    ' objet testé
    Private personne1 As Personne

    <SetUp()> _
    Public Sub init()
        ' on crée une instance de Personne
        personne1 = New Personne
        ' log
        Console.WriteLine("setup test")
    End Sub

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

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

End Class

Plusieurs choses sont à noter :

  • les méthodes sont dotées d'attributs tels <Setup()>, <TearDown()>, ...
  • pour que ces attributs soient reconnus, il faut que :
    • le projet référence l'assembly [nunit.framework.dll]
    • la classe de test importe l'espace de noms [NUnit.Framework]

La référence est obtenue en cliquant droit sur [References] dans l'explorateur de solutions :

Image

L'assembly [nunit.framework.dll] doit être dans la liste proposée si l'installation de [Nunit] s'est bien passée. Il suffit de double-cliquer sur l'assembly pour l'ajouter au projet :

Image

Ceci fait, la classe de test [NunitTestPersonne] doit importer l'espace de noms [NUnit.Framework] :

Imports NUnit.Framework

Les attributs de la classe de test [NunitTestPersonne] doivent alors être reconnus.

  • l'attribut <Test()> désigne une méthode à tester
  • l'attribut <Setup()> désigne la méthode à exécuter avant chaque méthode testée
  • l'attribut <TearDown()> désigne la méthode à exécuter après chaque méthode testée
  • la méthode Assert.AreEqual permet de tester l'égalité de deux entités.Il existe de nombreuses autres méthodes de type Assert.xx.
  • l'utilitaire NUnit arrête l'exécution d'une méthode testée dès qu'une méthode [Assert] échoue et affiche un message d'erreur. Sinon il affiche un message de réussite.

Configurons notre projet pour qu'il génère une DLL :

Image

La DLL générée s'appellera [nunit-demos-1.dll] et sera placée par défaut dans le dossier [bin] du projet. Générons notre projet. Nous obtenons dans le dossier [bin] :

Image

Lançons maintenant l'utilitaire de test graphique Nunit. Rappelons qu'il se trouve dans <Nunit>\bin et qu'il s'appelle [nunit-gui.exe]. <Nunit> désigne le dossier d'installation de [Nunit]. On obtient l'interface suivante :

Image

Utilisons l'option de menu [File/Open] pour charger la DLL [nunit-demos-1.dll] de notre projet :

Image

[Nunit] est capable de détecter automatiquement les classes de test qui se trouvent dans la DLL chargée. Ici, il trouve la classe [NunitTestPersonne]. Il affiche alors toutes les méthodes de la classe ayant l'attribut <Test()>. Le bouton [Run] permet de lancer les tests sur l'objet sélectionné. Si celui-ci est la classe [NunitTestPersonne], toutes les méthodes affichées sont testées. On peut demander le test d'une méthode particulière en la sélectionnant et en demandant son exécution par [Run]. Demandons l'exécution de la classe :

Image

Un test réussi sur une méthode est symbolisé par un point vert à côté de la méthode dans la fenêtre de gauche. Un test raté est symbolisé par un point rouge.

La fenêtre [Console.Out] à droite montre les affichages écran produits par les méthodes testées. Ici, nous avons voulu suivre le déroulement d'un test :

1
2
3
4
setup test
début test
fin test
teardown test
  • la ligne 1 montre que la méthode d'attribut <Setup()> est exécutée avant le test
  • les lignes 2-3 sont produites par la méthode [demo] testée (voir le code plus haut)
  • la ligne 4 montre que la méthode d'attribut <TearDown()> est exécutée après le test