Pytanie MOCKITO: co to jest i czym różni się od Junit


Chcę wiedzieć, co to jest Mockito?

Czy wspiera Junit, czy jest to środowisko do pisania przypadków testowych Junit?

Czy ktoś może mi wyjaśnić różnicę między Junit i Mockito?


14
2017-08-03 15:26


pochodzenie


Czy twoje pytanie nie jest wyjaśnione? mockito.org? Jeśli nie, bądź bardziej konkretny. - SpaceTrucker


Odpowiedzi:


JUnit to framework, który pomaga w pisaniu i prowadzeniu testów jednostkowych.

Mockito (lub inne narzędzie szydercze) to framework, którego używasz do wydajnego pisania określonych rodzajów testów.

Jednym z podstawowych aspektów testów jednostkowych jest fakt, że chcesz odizolować swoją "klasę pod testem" od czegokolwiek na świecie. Aby to zrobić, bardzo często musisz stworzyć "testowe duble", które podasz do obiektu swojej "klasy w trakcie testu". Można utworzyć wszystkie te "testowe podwójne" ręcznie; lub używasz szyderczego schematu, który generuje obiekt pewnej klasy dla ciebie używający technik refleksji. Co ciekawe, niektórzy ludzie opowiadają się za tym, aby nigdy nie używać szyderczych ram; ale szczerze: nie mogę sobie tego wyobrazić.

Innymi słowy: zdecydowanie można używać JUnit bez użycia szyderczego framework'u. To samo dotyczy odwrotnego kierunku; ale w rzeczywistości nie ma wielu dobrych powodów, dla których chciałbyś użyć Mockito do innych celów niż testowanie jednostkowe.


17
2017-08-03 15:57



Więc jeśli dołączysz biblioteki mockito to domyślnie będzie to biblioteka Junit? - Random
Pierwsza rzecz do zrozumienia: są różne produkty. Poza tym, że zazwyczaj używasz ich razem, wszystkie te "rzeczy" są od siebie niezależne. Tak więc nie obejmują się nawzajem. Ale tak naprawdę: to nie jest coś, o co powinieneś zapytać: przejdź na strony główne każdego z tych produktów; i przeczytaj ich dokumentację. Nie polegaj na ludziach, którzy wyjaśniają ci rzeczy udokumentowane na widoku. - GhostCat
Jestem jednym z tych, którzy opowiadają się za unikaniem używania szyderczych bibliotek (mimo że je rozwijam!). Po wielu latach doświadczeń zdałem sobie sprawę, że zwykle prowadzi to do złych testów. Ludzie mają silną skłonność do nadużywania / nadużywania / niewłaściwego użycia narzędzia szyderczego. Zamiast tego wolę testy integracyjne. Co ciekawe, znani "guru" (w tym "twórca" TDD) również nie lubią drwić; piszą nieizolowany testy jednostkowe - dla odniesienia zobacz Ten artykuł. - Rogério
@ Rogério Myślę, że jestem jakoś na tym etapie. Absolutnie preferuję testy jednostkowe (w bardziej wąskiej definicji), które nie wymagają drwiny. Ponieważ test jest o wiele bardziej elegancki; i wiesz, określając zachowanie makiety - chodzi o testowanie wewnętrznej implementacji testowanej klasy. Ale: wiele podstawowych klas / obiektów w naszym produkcie działa tylko wtedy, gdy działa nasz cały produkt. Jeśli potrzebuję czegoś użyć, mam dwie możliwości: użyj kpiny; lub wybierz "test funkcjonalny", który zajmuje mi 10 minuty przygotować się i to jest ciężko wykonać ... - GhostCat
@ Rogério i jest prawie niemożliwe do automatyzacji, ponieważ nie mamy dobrych środków do automatyzacji testów funkcjonalnych. Więc robisz matematykę; która z tych dwóch opcji daje mi szybszą informację zwrotną ?! - GhostCat


JUnit jest biblioteką Java używaną do pisania testów (oferuje wsparcie dla uruchomionych testów i różnych dodatkowych pomocników - takich jak metody konfiguracji i odrzucania, zestawy testów itp.). Mockito to biblioteka, która umożliwia pisanie testów za pomocą kpiąco podejście.

Zobacz tutaj fajny artykuł na temat szyderstwa a nie szydercze testy: http://martinfowler.com/articles/mocksArentStubs.html


6
2017-08-03 15:32