1 Test Doubles Adam Gabryś , v1.1,
2 Plan prezentacji Wstęp: Co to jest „Test Double”?Rodzaje „Test Double” Przykład Podsumowanie
3 Wstęp Obiekty symulujące określone zachowanie Ułatwiają testowanie:Wyeliminowanie implementacji nadmiarowego kodu Uniezależniają testy od środowiska zewnętrznego Umożliwiają przeprowadzenie dokładniejszych testów, np. weryfikacja wywołań
4 Rodzaje „Test double” Dummy Stub Spy Fake Mock Bez implementacjiPotrzebne przy wywoływaniu operacji z parametrami Stub Implementacja metod zwracających wartości Spy Weryfikacja wywołań Fake Zaimplementowane interakcje pomiędzy składowymi Mock Dynamicznie implementowany
5 Przykład Przykład z wykorzystanie biblioteki moqDefinicja interfejsu reprezentującego bazę danych: public interface UserDB { string GetUserName(int id); }
6 Przykład Definicja klasy korzystającej z bazy danych:public class Simple { private int m_id; private UserDB m_db; public Simple(int id, UserDB db) m_id = id; m_db = db; } public string GetName() return m_db.GetUserName(m_id);
7 Przykład Definicja metody testowej: [TestMethod]public void GetNameTest() { // utworzenie mock’a Mock
8 Wysoka jakość tworzonego oprogramowania!!!Podsumowanie Przyspieszenie implementacji testów Uniezależnienie testów od środowiska zewnętrznego Dokładniejsza kontrola nad przepływem sterowania (metody weryfikacyjne) Wysoka jakość tworzonego oprogramowania!!!
9 Bibliografia Unit Testing – „Exploring The Continuum Of Test Doubles”, moq:
10 Koniec Dziękuję za uwagę. Pytania?