Skip to content

8. Załączniki

8.1. Gdzie znaleźć Spring?

Główna strona Springa to [http://www.springframework.org/]. Jest to strona poświęcona wersji Java. Wersja .NET, która jest obecnie w fazie rozwoju (kwiecień 2005 r.), znajduje się pod adresem [http://www.springframework.net/].

Image

Strona pobierania znajduje się pod adresem [SourceForge]:

Image

Po pobraniu powyższego pliku ZIP należy go rozpakować:

Image

W niniejszym dokumencie wykorzystaliśmy wyłącznie zawartość folderu [bin]:

Image

W projekcie Visual Studio wykorzystującym Spring należy zawsze wykonać dwie czynności:

  • umieścić powyższe pliki w folderze [bin] projektu
  • dodać do projektu odwołanie do zestawu [Spring.Core.dll]

8.2. Gdzie znaleźć NUnit?

Główną stroną serwisu Nunit jest [http://www.nunit.org/]. Wersja dostępna w kwietniu 2005 r. to 2.2.0:

Image

Pobierz tę wersję i zainstaluj ją. Instalacja tworzy folder, w którym znajduje się graficzna wersja testowa:

To, co jest interesujące, znajduje się w folderze [bin]:

Image

Image

Strzałka powyżej wskazuje graficzne narzędzie testowe. Instalacja dodała również nowe elementy do repozytorium zestawów w Visual Studio, które teraz omówimy.

Utwórzmy następujący projekt w Visual Studio:

Testowana klasa znajduje się w pliku [Personne.vb]:

Image

Public Class Personne

     ' pola prywatne
    Private _nom As String
    Private _age As Integer

     ' konstruktor domyślny
    Public Sub New()
    End Sub

     ' właściwości powiązane z polami prywatnymi
    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

     ' ciąg identyfikacyjny
    Public Overrides Function tostring() As String
        Return String.Format("[{0},{1}]", nom, age)
    End Function

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

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

End Class

Klasa testowa znajduje się w [NunitTestPersonne-1.vb]:

Imports System
Imports NUnit.Framework

<TestFixture()> _
 Public Class NunitTestPersonne

     ' obiekt testowany
    Private personne1 As Personne

    <SetUp()> _
    Public Sub init()
         ' tworzymy instancję klasy Personne
        personne1 = New Personne
         ' log
        Console.WriteLine("setup test")
    End Sub

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

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

End Class

Należy zwrócić uwagę na kilka kwestii:

  • Metody posiadają atrybuty, takie jak <Setup()>, <TearDown()>, ...
  • aby atrybuty te zostały rozpoznane, konieczne jest, aby:
    • projekt odwołuje się do zestawu [nunit.framework.dll]
    • klasa testowa importowała przestrzeń nazw [NUnit.Framework]

Odwołanie uzyskuje się poprzez kliknięcie prawym przyciskiem myszy na [References] w eksploratorze rozwiązań:

Image

Zestaw [nunit.framework.dll] powinien znajdować się na wyświetlonej liście, jeśli instalacja [Nunit] przebiegła pomyślnie. Wystarczy dwukrotnie kliknąć na zestaw, aby dodać go do projektu:

Image

Po wykonaniu tej czynności klasa testowa [NunitTestPersonne] musi zaimportować przestrzeń nazw [NUnit.Framework]:

Imports NUnit.Framework

Następnie należy zidentyfikować atrybuty klasy testowej [NunitTestPersonne].

  • atrybut <Test()> określa metodę, która ma zostać przetestowana
  • atrybut <Setup()> oznacza metodę, która ma zostać wykonana przed każdą testowaną metodą
  • atrybut <TearDown()> oznacza metodę, którą należy wykonać po każdej testowanej metodzie
  • metoda Assert.AreEqual pozwala sprawdzić, czy dwie wartości są równe; istnieje wiele innych metod typu Assert.xx.
  • Narzędzie NUnit zatrzymuje wykonywanie testowanej metody, gdy tylko metoda typu [Assert] zakończy się niepowodzeniem, i wyświetla komunikat o błędzie. W przeciwnym razie wyświetla komunikat o pomyślnym zakończeniu.

Skonfigurujmy nasz projekt tak, aby generował metodę DLL:

Image

Wygenerowana metoda DLL będzie nosiła nazwę [nunit-demos-1.dll] i zostanie domyślnie umieszczona w folderze [bin] projektu. Wygenerujmy nasz projekt. W folderze [bin] otrzymujemy:

Image

Uruchommy teraz narzędzie do testowania grafiki Nunit. Przypomnijmy, że znajduje się ono w katalogu <Nunit>\bin i nosi nazwę [nunit-gui.exe]. <Nunit> oznacza katalog instalacyjny pliku [Nunit]. Pojawi się następujący interfejs:

Image

Skorzystajmy z opcji menu [File/Open], aby załadować pliki DLL i [nunit-demos-1.dll] z naszego projektu:

Image

[Nunit] potrafi automatycznie wykryć klasy testowe znajdujące się w załadowanym pliku DLL. W tym przypadku wykrywa klasę [NunitTestPersonne]. Następnie wyświetla wszystkie metody tej klasy posiadające atrybut <Test()>. Przycisk [Run] pozwala uruchomić testy na wybranym obiekcie. Jeśli jest to klasa [NunitTestPersonne], testowane są wszystkie wyświetlone metody. Można zlecić testowanie konkretnej metody, zaznaczając ją i uruchamiając ją za pomocą [Run]. Zlećmy wykonanie klasy:

Image

Pomyślny wynik testu metody jest oznaczony zieloną kropką obok nazwy metody w lewym oknie. Niepomyślny wynik testu jest oznaczony czerwoną kropką.

Okno [Console.Out] po prawej stronie pokazuje ekrany generowane przez testowane metody. W tym przypadku chcieliśmy śledzić przebieg testu:

1
2
3
4
setup test
début test
fin test
teardown test
  • wiersz 1 pokazuje, że metoda atrybutu <Setup()> jest wykonywana przed testem
  • wiersze 2–3 są generowane przez testowaną metodę [demo] (patrz kod powyżej)
  • wiersz 4 pokazuje, że metoda atrybutu <TearDown()> jest wykonywana po zakończeniu testu