Jak przeprowadzasz test jednostkowy aplikacji i kodu interfejsu?


10

Uwielbiam pisać testy jednostkowe i zgadzam się, że są one doskonałym sposobem na testowanie kodu, zapobieganie regresjom itp. Jednak nie jestem w stanie napisać ich zbyt wiele, ponieważ ogromna większość kodu, nad którym pracuję na co dzień i na co dzień, to aplikacja kod wyświetlający interfejs użytkownika dla użytkownika. Czy istnieje dobry sposób na testowanie kodu aplikacji? Jakie są tutaj najlepsze praktyki?

Nie szukam konkretnej odpowiedzi, takiej jak ramy itp. Ale ogólnie, jak podejdziesz do tego problemu?


Co to jest „kod aplikacji wyświetlający interfejs użytkownika”? Mówisz o C w MVC?
Martin Wickman,

Mówię o jakimkolwiek interfejsie graficznym - JavaScript / HTML, C ++ z MFC, WinForms, WPF itp.
Justin Ethier

MVVM jest łatwy w testowaniu jednostkowym. Zobacz Wzorzec poleceń
Amir Rezaei,

@amir - Czy masz jakieś referencje lub dodatkowe informacje?
Justin Ethier,

Odpowiedzi:


8

Aby przetestować rzeczywisty interfejs użytkownika, Selenium działa dobrze.

Jeśli chcesz rzeczywistych testów jednostkowych, twoja strategia polega na wypchnięciu jak największej logiki z rzeczywistego interfejsu użytkownika, zwykle w obiekcie ViewModel. Następnie możesz napisać testy jednostkowe dla obiektu ViewModel.

Innymi słowy, umieść jak najmniej logiki w faktycznym interfejsie użytkownika, aby testy jednostkowe mogły odbywać się gdzie indziej.


To dobry projekt dla SoC, w interfejsie użytkownika nie powinno być logiki domeny / biznesu. Dużo logiki klienta - interaktywność / sprawdzanie poprawności można przejść w interfejsie użytkownika za pomocą JavaScript, który można testować jednostkowo.
StuperUser

1

Miałem sukces w testowaniu jednostkowym mojej aplikacji za pomocą MSTest i testowaniu Javascript za pomocą QUnit i zbieraniu wyników tych testów za pomocą pojedynczego testu MSTest używającego WatiN (zasugerowano mi Selenium , który ma również możliwość rejestrowania testów, ale okazało się, że WatiN jest lepszy do automatyzacji).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.