White jest open source’owym frameworkiem napisanym w C# wspierającym klientów aplikacji wykorzystujących Win32, WinForm, WPF and SWT (Java). Bazuje na .NET oraz zapewnia spójne API ukrywające złożoność biblioteki Microsoftu ¬ UI Automation. W dzisiejszym artykule wykorzystamy White do napisania prostego testu systemowego kalkulatora.
Na początku musimy dodać do projektu odpowiednie referencje. Bez nich nie będziemy mogli skorzystać z oferowanych przez White funkcji i właściwości. Pobieramy TestStack.White ze strony https://github.com/TestStack/White . Dodatkowo, aby skorzystać ze wszystkich właściwości .NETu dodamy bibliotekę Castle.Core dostępną na stronie http://www.castleproject.org/download/ . Po ściągnięciu odpowiednich .dll trzeba dodać je do ścieżki C:\Users\użytkownik\ścieżka do projektu na dysku\nazwa projektu\bin\Debug\. Kiedy oba pliki są tam skopiowane należy dodać do nich referencję w Visual Studio. W tym celu klikamy prawym przyciskiem na References i wybieramy Add References… . Przechodzimy do zakładki Browse, klikamy przycisk Browse i wskazujemy lokalizację bibliotek. Dodatkowo należy dodać jeszcze dwa frameworki z zakładki Assemblies: UIAutomation Types (jeśli chcemy rozpoznawać kontrolki po ich typie) oraz System.Configuration ( ponieważ będziemy korzystać z pliku konfiguracyjnego). Ostatnimi referencjami będą rozszerzenia z zakładki Extensions : EnvDTE, EnvDTE100, EnvDTE80, EnvDTE90, EnvDTE90a. Są to dodatki zawierające obiekty i elementy niezbędne dla Automation Core.
Kiedy wszystkie niezbędne referencje zostaną dodane do projektu, należy stworzyć plik konfiguracyjny, w którym zamieszczone zostaną klucze i wartości parametrów testu. Klikamy prawą myszą na nazwę projektu, wybieramy Add, a następnie New Item… . Z okienka wybieramy pozycję Application Configuration File. Nie zmieniamy nazwy pliku – pierwszy plik konfiguracyjny musi nosić nazwę App.config. Otwieramy go i dodajemy sekcję<appSettings> . W niej umieszczamy klucze i wartości dla naszego testu. Przykład poniżej:
TESTBASE
Kolejnym krokiem będzie stworzenie klasy bazowej, odpowiedzialnej za uruchamianie i zamykanie aplikacji przed i po każdym teście. W tym celu dodajemy nową klasę i nazywamy ją dowolnie, np. TestBase.cs. Czynimy klasę publiczną oraz dodajemy przed nią adnotację [TestClass] (linia 27). Tworzymy prywatne zmienne, które wykorzystamy w metodach inicjalizujących i czyszczących. Tworzymy metodę Initialize() i dodajemy przed nią adnotację [TestInitialize] (linia 42). Na początku funkcji pobieramy z pliku konfiguracyjnego ścieżkę do aplikacji i nazwę okna głównego i przypisujemy do zmiennych globalnych. Uruchamiamy aplikację poleceniem Launch() (linia 49). Następnie pobieramy listę okien uruchomionych programów i wyszukujemy nasz Kalkulator. Jeśli okno nie istnieje aplikacja wypisze na konsoli odpowiedni alert. Poniżej znajduje się opisywany fragment klasy:
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
Cześć – czy możesz podawać deklaracje namaspaceów? Bez tego dosyć ciężko odgadnąć Twój kod – w jakim namespace jest klasa Desktop?