Zpo-3b-lab

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenie 3b. Obiekty zastępcze

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 zastosowanie obiektów zastępczych (ang. mock objects) do testowania jednostkowego systemów obiektowych.

Instalacja

Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 oraz środowiska Eclipse w wersji 3.2 Biblioteka EasyMock jest dołączona do projektu zawierającego [media:zpo-05-lab.zip|szablon aplikacji]. Można także pobrać ją ze strony projektu EasyMock Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować (menu File->Import->Existing projects into workspace) projekt zpo-04-lab.zip z szablonem rozwiązania.

Zadanie 1

Napisz testy jednostkowe wykorzystujące obiekty zastępcze (ang. mock objects) do testowania aplikacji-zegara.

Zegar jest systemem interpretującym drgania generatora, który odmierza czas w postaci odcinków jednosekundowych. Generator drgań jest niezbędny do uruchomienia zegara, jednak wykorzystanie go w środowisku testowym jest niemożliwe, ponieważ wykonanie niektórych przypadków testowych zajęłoby zbyt wiele czasu.

Dlatego należy zaimplementować obiekt zastępczy reprezentujący generator drgań, który zastąpi odliczanie sekund prostszym i konfigurowalnym mechanizmem. Obiekt zastępczy jest alternatywną (w stosunku do istniejącego generatora drgań) implementacją interfejsu GeneratorDrgan, którego metody posiadają najmniejszą możliwą funkcjonalność, a jednocześnie są konfigurowalne.

Zadanie 2

Drugim zadaniem jest zrealizowanie tego samego obiektu zastępczego za pomocą biblioteki EasyMock, która pozwala na dynamiczne (tj. bez konieczności ich ręcznej implementacji) utworzenie obiektów z wykorzystaniem mechanizmu Java Dynamic Proxy.

Dokumentacja systemu EasyMock znajduje się pod adresem EasyMock

Literatura

  1. T. Mackinnon, S. Freeman, P. Craig "Endo testing. Unit testing with mock objects". [PDF]
  2. "Mock objects i EasyMock w praktyce". [Java Developers Network]
  3. A. Chaffee, W. Pietri "Unit testing with mock objects". [IBM]
  4. EasyMock Homepage, http://www.easymock.org