04 - Dublerzy testowi

17

Click here to load reader

Transcript of 04 - Dublerzy testowi

Page 1: 04 - Dublerzy testowi

DUBLERZY TESTOWI

1.Prezentacja kodu

2.Dublerzy - kiedy i po co?

3.Dummy

4.Stub

5.Mock

6.Spy

Page 2: 04 - Dublerzy testowi

Prezentacja kodu

Page 3: 04 - Dublerzy testowi

MOCKI

Page 4: 04 - Dublerzy testowi

KLASYCZNE TESTOWANIE

SUTTEST

FIXTURE

Exercise

Verify

Setup

Page 5: 04 - Dublerzy testowi

TEST Z ZALEŻNOŚCIĄ

SUT DOCTEST

FIXTURE

Page 6: 04 - Dublerzy testowi

POŚREDNIE WEJŚCIA

SUT DOCTEST

FIXTURE

Indirect Input

Page 7: 04 - Dublerzy testowi

POŚREDNIE WYJŚCIA

SUT DOCTEST

FIXTURE

Indirect Output

Page 8: 04 - Dublerzy testowi

RODZAJE DUBLERÓW

Page 9: 04 - Dublerzy testowi

DUMMY OBJECT

@Testpublic void shouldAddLineItem() {

Product product = new Product("Dummy Name", getUniqueNumber());Invoice invoice = new Invoice(new DummyCustomer());

invoice.addItemQuantity(product, QUANTITY);

LineItem expectedLineItem = new LineItem(invoice, product, QUANTITY);assertLineItemsEqual("", expectedLineItem, invoice.getFirstLineItem());

}

● wypełnia listę parametrów● kiedy nie można przekazać

nulla● nie używany

Page 10: 04 - Dublerzy testowi

TEST STUB● Responder● Saboteur

Page 11: 04 - Dublerzy testowi

TEST STUB@Testpublic void productNotFound() { mockery.checking(new Expectations() {{ allowing(catalog).findItem(BARCODE); will(throwException(new ProductNotFoundException(BARCODE))); oneOf(display).displayProductNotFoundMessage(BARCODE); }});

pointOfSale.onBarcode(BARCODE);}

@Testpublic void addAMovie() { MovieListPresenter movieListPresenter = presenterWithNoMovies(); when(movieView.getNewTitle()).thenReturn(STAR_WARS);

movieListPresenter.add();

verify(movieView).showMovies(list(movieTitled(STAR_WARS)));}

Page 12: 04 - Dublerzy testowi

MOCK OBJECT

@Testpublic void emptyBarcode() throws Exception { mockery.checking(new Expectations() {{ oneOf(display).displayEmptyBarcodeMessage(); }});

pointOfSale.onBarcode("");}

WERYFIKACJA ZACHOWANIA

Page 13: 04 - Dublerzy testowi

TEST SPY

STUB+MOCK

predefiniowane odpowiedzi

weryfikacja zachowania

Page 14: 04 - Dublerzy testowi

TEST SPY

@Testpublic void addAMovie() { MovieListPresenter movieListPresenter = presenterWithNoMovies(); when(movieView.getNewTitle()).thenReturn(STAR_WARS);

movieListPresenter.add();

verify(movieView).showMovies(list(movieTitled(STAR_WARS)));}

Page 15: 04 - Dublerzy testowi

FAKE

DZIAŁAJĄCA,ALE UPROSZCZONA

IMPLEMENTACJA

Page 16: 04 - Dublerzy testowi

Bibliografia

● Gerard Meszaros, xUnit Test Patterns, Addison-Wesley 2007

● http://xunitpatterns.com/● http://martinfowler.com/articles/mocksArentStub

s.html

Page 17: 04 - Dublerzy testowi

[8] http://xunitpatterns.com/Types%20Of%20Test%20Doubles.gif[9] http://www.flickr.com/photos/lincolnblues/1413187481[10,11]http://www.flickr.com/photos/21123209@N06/2460486552/ [14] http://www.flickr.com/photos/dunechaser/2630433944

DZIĘKUJĘ

Zdjęcia: