2010-09-13 8 views
9

Czy powinienem użyć wbudowanego generatora testów jednostkowych (VS) dla klas docelowych, czy też powinienem się sam nauczyć pisać test jednostkowy? A co to jest "Mock"? Słyszę to w kółko, ale nikt nie dba o dobre wyjaśnienie.C# - Test jednostkowy, makiety?

Z góry dziękuję.

+1

To było zabawne. –

+0

możliwy duplikat [Co to jest szyderstwo?] (Http://stackoverflow.com/questions/2665812/what-is-mocking) – nawfal

Odpowiedz

16

Musisz nauczyć się samodzielnie pisać testy jednostek. Zacznij od właściwej stopy z dobrym zrozumieniem terminologii, którą wielu ludzi popełnia błędy:

Test jednostkowy: Testowanie pojedynczej jednostki kodu, bardzo mały test atomowy.

Test integracji: Testowanie wielu jednostek kodu zintegrowanych ze sobą, aby przejść przez różne warstwy i upewnić się, że poprawnie używają siebie nawzajem. Należy to zrobić po sprawdzeniu testów jednostkowych, czy poszczególne jednostki działają niezależnie. Wiele osób błędnie określa je jako testy jednostkowe.

Wbudowany test weryfikacyjny: Testowanie zbudowanego produktu poprzez wdrożenie go i uruchomienie testów, które będą współdziałać z nim w sposób, w jaki użytkownik wykonałby test. Często mylnie określane jako testy jednostkowe. Są to najczęściej w pełni wypróbowane testy, często wykonywane ręcznie przez zespoły testujące, a nie zautomatyzowane.

Oto quickstart dla MOQ które to ramy szyderczy: https://github.com/Moq/moq4/wiki/Quickstart

Mocking jest aktem biorąc kawałek kodu, który może zależeć od innych rzeczy, szydząc te inne rzeczy, tak, że można kontrolować okoliczności otaczające fragment kodu, który chcesz przetestować.

Celem szyderstwa jest atomowość w testach. Pozwala na przetestowanie pojedynczego fragmentu kodu, który nie ma wpływu na testy z powodu błędów w zależnych kodach. Również szyderstwo daje możliwość tworzenia różnorodnych scenariuszy w celu przetestowania skrajnych przypadków każdego fragmentu kodu.

Prześmiewanie służy zwykle do tworzenia granic wokół kodu docelowego w testach jednostkowych, choć nierzadko używa się go również w testach integracyjnych do wytwarzania zasobu, który działa jak zalążek zintegrowanego łańcucha kodu, na który kierujesz cel.

+0

Czy te "mocks" powinny być zapisane w klasie dla siebie lub czy są tylko tymczasowe, aby przetestować niektóre zakodować, a następnie usunąć próbę (y) później? – ebb

+0

@ebb: To jest stary sposób na zrobienie tego i działa dobrze, ale tam właśnie pojawiają się szydercze frameworki, pozwalają ci kpić z obiektów, nie tworząc jednocześnie fałszywej klasy. Wszelkie kpiny zależą jednak od polimorficznego związku z przedmiotami, które udajesz. Potrzebujesz więc interfejsu lub klasy bazowej do współdzielenia lub wirtualnych metod, aby zastąpić obiekty, o których można by pomyśleć. –

+1

Czego powinienem/powinnam się najpierw nauczyć? Kpiny lub testowanie jednostek? – ebb

Powiązane problemy