2008-10-28 14 views
6

Wprowadziłem odwiedzających jako jeden z kluczowych pomysłów dotyczących architektury w jednej z moich aplikacji. Mam kilku gości, którzy działają na tych samych rzeczach. Jak powinienem to przetestować? Niektóre testy, o których myślę, są nieco większe niż test jednostkowy (test integracyjny?), Ale nadal chcę to zrobić. W jaki sposób przetestujesz kod taki jak próbka C++ z wiki art na Visitor PatternTestowanie jednostek Architektura odwiedzin użytkowników

Odpowiedz

1

zrobić testowy obiekt odwiedzający i sprawić by odwiedził on ... .... sprawdzenie, czy odwiedził on właściwe rzeczy.

+0

Czy możesz podać prosty przykład, ponieważ korzystam z Jsqlparser, który używa wzorca odwiedzającego i chciał wiedzieć, jak je przetestować. – Tony

+0

prawdopodobnie chcesz zadać własne pytanie. pokaż podstawowy kod i problemy z testowaniem. Nie używam już C++, ale ktoś inny prawdopodobnie da ci kod pokazujący jak. –

+0

Oto [link] (http://stackoverflow.com/questions/41887920/how-to-do-unit-testing-of-visitors-in-jsqlparser) na moje pytanie. – Tony

2

Możesz utworzyć mock objects i poprosić odwiedzających, aby odwiedzili je, a następnie utworzyć fałszywe odwiedzających i sprawdzić, czy odpowiednie działania zostały wykonane.

+0

To naprawdę bardzo dobry pomysł !!! –

3

Testowanie jednostek nie polega na testowaniu wzorców, chodzi o testowanie poprawnej implementacji metod i funkcji. Wzorzec odwiedzającego jest specyficzną strukturą klas i dla każdej z klas (konkretnie ConcreteVisitor i ConcreteElement) będziesz potrzebował testów jednostkowych.

Po uzyskaniu pewności, że metody klasy zachowują się poprawnie, można użyć struktury testowej urządzenia do opracowania testów integracyjnych. Nie zaczynaj od razu testowania integracji: odkryjesz, że tworzysz wiele testów integracyjnych, które faktycznie testują zachowanie określonej klasy, tj. Testy jednostkowe.

Bez względu na to, czy potrzebujesz fałszywych obiektów, czy możesz używać "prawdziwych" obiektów, to inna sprawa. To zależy w dużej mierze od tego, czy obiekty zachowują się wystarczająco dobrze dla celów testów jednostkowych (tj. Nie pobierają dodatkowych zależności itd.) I czy same obiekty są testowane jednostkowo (tj. Musisz mieć zaufanie do tych obiektów 100%). Fałszywy kontra rzeczywisty obiekt został już wcześniej rozwiązany w Stackflow, więc szukaj tagów unittest.