Zpo-3a-lab
Ćwiczenie 3a. Testowanie jednostkowe
Informacje wstępne
Ćwiczenie jest realizowany w języku Java w środowisku Eclipse 3.2. Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. Celem ćwiczenia jest implementacja testów jednostkowych zgodnych z konwencją JUnit 3.8, JUnit 4.1 i TestNG.
Instalacja
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 [1] oraz środowiska Eclipse [2] w wersji 3.2
Obsługa bibliotek JUnit w wersjach 3.8 i 4.0 jest natywnie wspierana przez Eclipse 3.2, natomiast plugin dla TestNG można zainstalować korzystając z instrukcji zamieszczonej tutaj. Sposób korzystania z wtyczki dla TestNG został opisany tutaj.
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować (menu File->Import->Existing projects into workspace) projekt zpo-3-lab.zip z szablonem rozwiązania.
Zadanie 1
Zaimplementuj testy jednostkowe dla istniejącej klasy RomanNumberConverter, która służy do konwersji liczb arabskich na liczby rzymskie. Konstruktor tej klasy przyjmuje jako parametr liczbę będącą wartością arabską, natomiast metoda toRoman() zwraca napis będący zapisem rzymskiego odpowiednika tej liczby.
Testy jednostkowe należy zapisać w postaci trzech klas:
- RomanNumberJUnit3Test, zawierającej przypadki testowe dla biblioteki JUnit 3.8
- RomanNumberJunit4Test, zawierającej przypadki testowe dla biblioteki JUnit 4.1
- RomanNumberTestNGTest, zawierającej przypadki testowe dla biblioteki TestNG
Przypadki testowe muszą uwzględniać:
- liczby ujemne
- wartości weryfikujące poprawność generowania każdej cyfry rzymskiej
Podczas tworzenia testów warto wykorzystać rozszerzone możliwości oferowane przez JUnit 4.1 oraz TestNG
Zadanie 2
Zaimplementuj testy jednostkowe dla klasy CollectionSet stworzonej w poprzednim ćwiczeniu. Przypadki testowe powinny uwzględniać:
- próbę dodania elementu, który nie jest kolekcją,
- dodanie jednej kolekcji,
- dodanie kilku kolekcji,
- dodanie kilku kolekcji, z których część też jest instancjami klasy CollectionSet.
Literatura
- T. Janaudy "TestNG: The next generation of unit testing". [JavaWorld]
- T. Mackinnon, S. Freeman, P. Craig "Endo testing. Unit testing with mock objects". [PDF]
- "Mock objects i EasyMock w praktyce". [Java Developers Network]
- A. Chaffee, W. Pietri "Unit testing with mock objects". [IBM]
- Strona domowa projektu [JUnit]
- Strona domowa projektu [TestNG]