Kolejną metodą będzie funkcja zamykająca okno testowanej aplikacji. Jest ona znacznie krótsza – jest to wersja podstawowa. Przed nazwą metody dodajemy adnotację [TestCleanup].
Wyszukujemy nazwę aplikacji na liście otwartych i aktywnych instancji i wywołujemy na niej funkcję Close(). Oczywiście jest to wersja dość uboga – może przecież okazać się, że okno jest już zamknięte (aplikacja scrashowała się podczas testu i okno zostało zamknięte), więc należałoby sprawdzić, czy okno nie jest nullem. Ale na potrzeby niniejszego artykułu wystarczy nam opcja podstawowa.
Następnym etapem jest stworzenie klasy zawierającej metody dla naszego testu. Można nazwać ją dowolnie, nazwa ma być intuicyjna. Nasz test będzie najprostszym z możliwych – będzie to dodanie dwóch liczb pojedynczych i sprawdzenie czy suma będzie taka, jaka być powinna. W tym celu tworzymy dwuparametrową metodę typu void. Tworzymy instancję okna na podstawie tytułu aplikacji (linia 83). Poniżej tworzymy obiekty typu UIItem wyszukując w oknie kontrolki na podstawie tekstu (linia 84 i 85) oraz na podstawie automationID (linia 86 i 87). Aby pobrać automationID wykorzystujemy program Inspect.exe, o którym wspomniano we wcześniejszych wpisach. Po kliknięciu w znak równości wywołano funkcję WaitWhileBusy() – funkcja ta czeka, dopóki okno jest zajęte. Jest to istotny element synchronizacji i przydaje się w bardziej czasochłonnych komendach. Na koniec użyto asercji AreEqual(), aby sprawdzić poprawność dodawania. Ciekawostka: jeśli zamiast resultInt.ToString() użyjemy tylko resultInt rezultat testu będzie fail – 15 i „15” to tutaj całkiem odmienne wartości. Metoda prezentuje się następująco:
Ostatnim etapem będzie napisanie testu. Przechodzimy do pliku, który jest domyślnie tworzony wraz z projektem. Dodajemy dziedziczenie klasy TestBase (linia 7). Tworzymy obiekt naszej klasy z metodą dodającą (linia 9). W metodzie wywołujemy funkcję, podając w parametrach liczby do dodania (linia 14).
Jest to najprostszy przykład wykorzystania frameworka TestStack.White. Poniżej podane zostaną przykłady interakcji z mniej oczywistymi kontrolkami, np.:
- Combobox
dateOption – to podana w parametrze funkcji wartość do wybrania z combobox (string)
- Menu
Chcesz lepiej zrozumieć aplikacje i systemy, które testujesz? Dołącz do ModernTester, poznaj najpotrzebniejsze narzędzia, frameworki oraz języki programowania i ćwicz na specjalnie przygotowanych środowiskach testowych: Platforma e-learningowa ModernTester
[TestCleanup] – co tam szukasz okna głównego aplikacji – co sądzisz o wykonaniu cleanupa przez zabicie testowanego procesu? Dajesz też przykład dorzucenia metod do nowej klasy (jak rozumiem zagnieżdżonej w klasie TestBase) – na tym przykładzie fajniej wyglądałoby zastosowanie Page Object Pattern – pokazanie, że to świetne podejście nie tylko w testach Webowych – buttony zastosowane jako propertiesy maniWindowa – wtedy w [TestMethod] nie wywołujesz metody przygotowanej z boku tylko wykonujesz operacje, jakie wykonuje user – wtedy masz świetny test, czytelny dla osoby, która go nie kodowała; za analizę testu może wziąć się osoba nietechniczna/mniej techniczna