2012-03-16 10 views
6

Mam aplikację kliencką C# (CompositUI/WinForms). Ta aplikacja łączy się z usługą internetową za pomocą SmartClient. Moim zadaniem jest wprowadzenie testów (do modernizacji) do tej aplikacji przy użyciu ramek SpecFlow i White. Aby przetestować GUI, muszę wyśmiać połączenia z usług sieciowych. Klasa, która się z nią łączy, jest wstrzykiwana przez Spring.net. Moim zadaniem jest przetestowanie aplikacji, która będzie mogła wyśmiać wywołanie usługi sieciowej podczas testów, co oznacza, że ​​mój kod testowy musi mieć kontrolę nad tym, co zrobi moja makieta. Problem: metoda, która uruchamia GUI, po prostu nie zwraca kontroli do wątku, który ją wywołał. W rezultacie nie możemy kontrolować GUI i prób.Testowanie WinForms/CompositeUI GUI z testem SpecFlow, White, Spring i MS

So pytania mam w tym momencie są:

  • jest to wykonalne (a jeśli tak - jak to zrobić), aby uruchomić GUI w oddzielnym wątku i mieć kontrolę z powrotem do wątku testowej?

  • jakie byłyby inne możliwości prowadzenia testów GUI, które pozwoliłyby mi mieć kontrolę nad wstrzyknięciami?

Odpowiedz

-1

Niezbędny do testowania .net interfejsie użytkownika będzie musiał użyć zestawu narzędzi MVVM lub utworzyć tak można skonfigurować rozwiązanie do testowania metody stosowane przez UI. Istnieje wiele frameworków dla .net, które obsługują to na Wikipedia.

Podstawą wszystkich testów interfejsu użytkownika MVVM jest schemat DI/IOC, który również należy wybrać.

Zasadniczo tworzysz klasę ViewModel, którą możesz przetestować. Na przykład testowanie jednostkowe z WPF - http://www.markermetro.com/2010/07/technical/mvvm-light-and-unit-testing-example/

Teraz kilka pomysłów do przemyślenia. Po pierwsze, WinForms .NET nie będzie miał dużych zmian przez M $ (DZIĘKUJEMY BUNCH!), A XAML/WPF nie ma ścieżki aktualizacji. MS $ wskazało, że programiści powinni zacząć korzystać z projektantów interfejsu użytkownika WPF do projektów komputerów stacjonarnych. Liczba frameworków MVVM, które obsługują WinForms jest ograniczona, więc być może trzeba będzie przetoczyć własne przez DI, ale spójrz na następującą dyskusję StackOverflow na ten temat.

Po drugie .NET Forms do WPF do Windows Phone do problemów z implementacją interfejsu WWW do Metro UI. Zespół Microsoftu P & P stworzył pryzmat dla xaml/WPF ma pewne wzory antyzagrażeniowe Dependancy Injection (Service Locator jest ZŁY) według książki Mark Seemann and his Dependency Injection in .NET. Prism nie został uaktualniony do Metro i zmieniony, wprowadzając w błąd użytkowników i czyniąc go częściowo zbędnym. Zasadniczo chodzi mi o to, że uzyskanie ram, które pozwolą na przejście interfejsu użytkownika aplikacji, będzie trudne.

+0

To nie odpowiada na pytanie. On nie mówi o logice prezentacji testów jednostkowych, on naprawdę chce, żeby test kliknął przyciski i wpisał w polach tekstowych. Sposób budowania interfejsu użytkownika (mvvm, MVP, kod) jest nieistotny dla tego rodzaju testów. – Andy

+0

Również WinForm jest obsługiwany, ale nie będzie większych zmian. Wpf będzie preferowanym sposobem budowania nowych aplikacji na komputery stacjonarne (te nie znikną) oraz aplikacji xaml/winrt lub win/js dla aplikacji sklepu Windows. – Andy

+0

@Andy zmodyfikowana odpowiedź w celu wyjaśnienia technologii. –

Powiązane problemy