Strona główna > Java > Refleksja o/w testach

Refleksja o/w testach

Używanie refleksji w normalnym/produkcyjnym kodzie może wydawać się: dziwne, wprowadzające komplikacje, czy zbyt duże obciążenie (zamieszanie), niekoszerne … Warto jednak zapoznać się z paroma sztuczkami, aby ułatwić sobie czasami testowanie.

Dzięki refleksji można zbudować proste narzędzia przydatne przy:
– wstrzykiwaniu zależności (ustawianie wartości), kiedy w normalny sposób nie można tego zrobić;
– pobieraniu wartości (tak samo jak wyżej, kiedy nie ma mechanizmu do tego).
Można powiedzieć, że zawsze da się sprawić, żeby to co nie jest dostępne było dostępne. Jednak jeśli jest to robione tylko na potrzeby testu, to może się wydawać zbyteczne (kod służący tylko do testowania jest w kodzie produkcyjnym, coś jak). Tu argumentem za jest także przypadek gdy pracujemy na kodzie, którego po prostu nie możemy zmienić.

Dlatego mechanizm operujący na obiektach danej klasy, a nie kod wewnątrz tej klasy, może być użyteczny.
W podstawowej wersji może sprowadzać się to do dwóch metod (szczegóły tego jak to zostało zaimplementowane tutaj):

	public static void setFiledValue(Object target, String filedNmae, Object value){
		...
	}
	
	public static Object getFiledValue(Object target, String filedNmae){
		...
	}

Gdzie to można użyć?
Wstrzykiwania zależności, np. do testowania EJB, gdzie mam wiele pól, które mają być ustawione przez kontener. Oczywiście można zawsze dostarczyć to bez takiego mechanizmu – użycie setterów lub stworzenie odpowiednich konstruktorów😉.

Pobieranie wartości, których normalnie nie da się pobrać. To jest przydatne w weryfikacji: czy to co miało się wykonać, wykonało się poprawnie i czy odpowiedni stan został ustawiony.
W ostatnim przypadku, także pewnie można znaleźć zamiennik.

Zawsze można powiedzieć, że gdzieś tam jest wspaniała biblioteka lub technika tworzenia kodu, która uwolni nas od takich problemów. Niemniej świadomość, że można tak robić, może być kolejnym sposobem na ugryzienie problemu lub przynajmniej wskazania rozwiązania dla niego😉.

Kategorie:Java Tags: ,
  1. Brak komentarzy.
  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: