Testy jednostkowe w Silverlight

Jedna z ważniejszych funkcjonalności którą dostarczyliśmy w Silverlight 2 Beta1 są testy jednostkowe, które pozwalają na przeprowadzenie testów zarówno na poziomie API jak i na poziomie UI. Funkcjonalność testów jest niezależna od przeglądarki i od platformy, mogą być używane do szybkiego uruchamienia i weryfikacji zautomatyzowanych testów jednostkowych.

Jako dodatek do opublikowanej funkcjonalności testów jednostkowych, dostarczyliśmy również źródła do ~2000 testów jednostkowych zbudowanych z wykorzystaniem tej funkcjonalności, które automatycznie pokrywają źródła kontrolki Silverlight, które również dostarczyliśmy na liberalnej licencji (możecie pobrać kod źródłowy kontrolki, modyfikować go, uruchamiać testy jednostkowe aby testować zachowanie, po czym udostępnić kontrolkę w jaki sposób się wam podoba). 

Uczymy się używać testów jednostkowych Silverlight

Jeff Wilcox (który stworzył framework testów jednostkowych Silverlight) opublikował świetną notkę na blogu w której tłumaczy jak dodać projekt testu jednostkowego Silverlight do solucji. Możecie pobrać aplikację typu chat, o której pisałem przy okazji tutoriala do programu Expression Blend w poprzednim miesiącu, a którą on użył do zaprezentowania testów. Możecie również obejrzeć niezły film video Jeffa, w którym omawia framework testów jednostkowych oraz przypadki testowe które dostarczyliśmy.

Jak Jeff pokazał w swojej notce, możecie dodać "Silverlight Test Project" do waszej solucji w Visual Studio która będzie wówczas zawierać testy jednostkowe dla aplikacji na której pracujecie:

Następnie możecie dodać klasy testów jednostkowych do projektu testów, testujące API lub symulujące akcje UI w kontrolkach Silverlight (symulujące kliknięcia przycisków itp.).

Teraz możecie uruchomić projekt testów i wykonać testy w nim zawarte aby je zweryfikować i wyświetlić ich wyniki.

Framework testu Jeffa automatycznie udostępnia narzędzia oraz system raportowania w przeglądarce (co oznacza iż możecie uruchamiać je w dowolnej kombinacji system operacyjny/przeglądarka na której działa Silverlight):

Kolejną funkcjonalnością frameworku testu Jeffa jest obsługa szybkiego wyzerowania ustawień kontrolek po każdym teście (dzięki czemu unikamy uruchamiania nowej instancji przeglądarki dla każdego przypadku testowego - zyskujemy na szybkości testowania).

Możecie szybko wykonać setki lub tysiące zautomatyzowanych testów w czasie liczonym w sekundach:

Zielone wyniki oznaczają testy zakończone powodzeniem. Czerwone wyniki oznaczają iż przypadek testowy się nie powiódł i zalogowano błędną asercję oraz/lub wystąpił wyjątek.

Podsumowanie

Jeśli kiedykolwiek zmagaliście się z problemem zautomatyzowanych testów jednostkowych lub TDD w aplikacjach AJAX, myślę iż zauważycie iż Silverlight dostarcza lepsze możliwości testowania. Używając Visual Studio możecie oddzielić testy do osobnego projektu w solucji, przez co nie musicie umieszczać ich wewnątrz aplikacji Silverlight aby je uruchomić.

Dodatkowo obok wsparcia funkcjonalności testów jednostkowych i frameworka testu, będziemy również wspierać API automatyzacji UI w finalnym wydaniu Silverlight 2. Otrzymamy dostęp do scenariuszy dostępności (pozwoli czytnikom ekranu pracować z Silverlight i zapewni aplikacjom Silverlight zgodność z Section 508). Dzięki API automatyzacji UI można tworzyć scenariusze testowe wykorzystujące automatyzację UI przeglądarki, która zasumuluje rzeczywiste interakcje myszy i klawiatury oraz udostępni zautomatyzowane testy "doświadczeń".  Taka kombinacja powinna umożliwić wam budowę bardziej solidnych i zarządzalnych rozwiązań RIA.

Mam nadzieję iż wam to pomoże,

Scott

P.S. Po więcej tutoriali i odnośników na temat Silverlight 2 zajrzyjcie na moją nową stronę "Silverlight Tips, Tricks, Tutorials and Links".

Wpis jest tłumaczeniem notki "Unit Testing with Silverlight" z blogu Scotta Guthrie.

Published Wednesday, April 2, 2008 9:00 AM by radzaw

Comments

No Comments