Your SlideShare is downloading. ×
0
Using Mockito
This work by
Fredrik Wendt
is licensed under a
Creative Commons
Attribution-NonCommercial-ShareAlike
3.0 Unported License
...
Outline
• mock(ClassToMock.class)
• when(methodCall)
● thenReturn(value)
● thenThrow(Throwable)
• verify(mock).method(args...
Why Mockito - and when?
Use Mockito to get
”smart” fake implementations
of classes or interfaces
out of your reach.
Classical 3A Test
@Test
public void test() throws Exception {
// Arrange
// Act
// Assert
}
Classical 3A Test
@Test
public void test() throws Exception {
// Arrange
UnitToTest testee = new UnitToTest();
Helper help...
Mockito ”Template” Usage
@Test
public void test() throws Exception {
// Arrange, prepare behaviour
Helper aMock = mock(Hel...
when(...).then*(...)
when(methodIsCalled).thenReturn(aValue);
when(methodIsCalled).thenThrow(anException);
Real Code
Properties properties = mock(Properties.class);
when(properties.get(”shoeSize”)).thenReturn(”42”);
String result...
Real Code
Properties properties = mock(Properties.class);
when(properties.get(”shoeSize”)).thenReturn(”42”);
String result...
when(...)
when(methodIsCalled)
aMockObject.method(arguments...)
properties.get(”42”)
properties.get(anyString())
propertie...
thenReturn(value)
Properties properties = mock(Properties.class);
when(properties.get(”shoeSize”))
.thenReturn(”42”));
Str...
thenThrow(Exception)
Properties properties = mock(Properties.class);
when(properties.get(”shoooSize”))
.thenThrow(new Ille...
thenReturn(...)
Properties properties = mock(Properties.class);
when(properties.get(”shoeSize”))
.thenReturn(”42”, ”43”, ”...
Creating Mock Objects
ClassToMock mockObject = mock(ClassToMock.class);
egentligen: Mockito.mock(ClassToMock.class);
Creating Mock Objects
ClassToMock mockObject = mock(ClassToMock.class);
@Mock
ClassToMock mockObject;
@Before
public void ...
Verifying Invocation On Mocks
// simple ”equals”
verify(properties).get(”property”);
// matchers
verify(properties).get(eq...
The IDE Can Help 1
• Window » Preferences » Java »
Editor » Content Assistant » Favorites
● org.junit.Assert.* assertTrue(...
The IDE Can Help 2
• Window » Preferences » Java » Editor » Templates
${staticImport:importStatic(
'org.mockito.MockitoAnn...
The IDE Can Help 3
• Window » Preferences » Java » Editor » Templates
tdd
@Test
public void ${test} throws Exception {
// ...
public class EmptyMatcher extends
TypeSafeMatcher<Collection <?>> {
@Override
public boolean matchesSafely(Collection<?> c...
Upcoming SlideShare
Loading in...5
×

Using Mockito

8,518

Published on

Slides used to introduce Mockito

Published in: Education
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,518
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
281
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide
  • out of reach:
    * too hard to setup
    * Singletons
    * Interfaces without proper classes
  • Transcript of "Using Mockito"

    1. 1. Using Mockito
    2. 2. This work by Fredrik Wendt is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License http://creativecommons.org/licenses/by-nc-sa/3.0/
    3. 3. Outline • mock(ClassToMock.class) • when(methodCall) ● thenReturn(value) ● thenThrow(Throwable) • verify(mock).method(args) • @Mock • initMocks(this) • assertThat(obj, matcher) • Eclipse IDE tips
    4. 4. Why Mockito - and when? Use Mockito to get ”smart” fake implementations of classes or interfaces out of your reach.
    5. 5. Classical 3A Test @Test public void test() throws Exception { // Arrange // Act // Assert }
    6. 6. Classical 3A Test @Test public void test() throws Exception { // Arrange UnitToTest testee = new UnitToTest(); Helper helper = new Helper(); // Act testee.doSomething(helper); // Assert assertTrue(helper.somethingHappened()); }
    7. 7. Mockito ”Template” Usage @Test public void test() throws Exception { // Arrange, prepare behaviour Helper aMock = mock(Helper.class); when(aMock.isCalled()).thenReturn(true); // Act testee.doSomething(aMock); // Assert - verify interactions verify(aMock).isCalled(); }
    8. 8. when(...).then*(...) when(methodIsCalled).thenReturn(aValue); when(methodIsCalled).thenThrow(anException);
    9. 9. Real Code Properties properties = mock(Properties.class); when(properties.get(”shoeSize”)).thenReturn(”42”); String result = properties.get(”shoeSize”); assertEquals(”42”, result);
    10. 10. Real Code Properties properties = mock(Properties.class); when(properties.get(”shoeSize”)).thenReturn(”42”); String result = properties.get(”shoeSize”); assertEquals(”42”, result); // optional verify(properties).get(”shoeSize”);
    11. 11. when(...) when(methodIsCalled) aMockObject.method(arguments...) properties.get(”42”) properties.get(anyString()) properties.get(eq(”42”))
    12. 12. thenReturn(value) Properties properties = mock(Properties.class); when(properties.get(”shoeSize”)) .thenReturn(”42”)); String value = properties.get(”shoeSize”); assertEquals(”42”, value);
    13. 13. thenThrow(Exception) Properties properties = mock(Properties.class); when(properties.get(”shoooSize”)) .thenThrow(new IllegalArgumentException(...)); try { properties.get(”shoooSize”); fail(”shoooSize is misspelled”); } catch (IllegalArgumentException e) { // good! :) }
    14. 14. thenReturn(...) Properties properties = mock(Properties.class); when(properties.get(”shoeSize”)) .thenReturn(”42”, ”43”, ”44”)); assertEquals(”42”, properties.get(”shoeSize”)); assertEquals(”43”, properties.get(”shoeSize”)); assertEquals(”44”, properties.get(”shoeSize”)); assertEquals(”44”, properties.get(”shoeSize”)); assertEquals(”44”, properties.get(”shoeSize”)); assertEquals(”44”, properties.get(”shoeSize”));
    15. 15. Creating Mock Objects ClassToMock mockObject = mock(ClassToMock.class); egentligen: Mockito.mock(ClassToMock.class);
    16. 16. Creating Mock Objects ClassToMock mockObject = mock(ClassToMock.class); @Mock ClassToMock mockObject; @Before public void setup() { MockitoAnnotations.initMocks(this); }
    17. 17. Verifying Invocation On Mocks // simple ”equals” verify(properties).get(”property”); // matchers verify(properties).get(eq(”property”));
    18. 18. The IDE Can Help 1 • Window » Preferences » Java » Editor » Content Assistant » Favorites ● org.junit.Assert.* assertTrue() ● org.mockito.Mockito.* mock() ● org.mockito.MockitoAnnotations @Mock ● org.mockito.BDDMockito.* given().then*()
    19. 19. The IDE Can Help 2 • Window » Preferences » Java » Editor » Templates ${staticImport:importStatic( 'org.mockito.MockitoAnnotations. initMocks')} @${beforeAnnotation: newType(org.junit.Before)} public void ${setUp}() { initMocks(this); ${cursor} }
    20. 20. The IDE Can Help 3 • Window » Preferences » Java » Editor » Templates tdd @Test public void ${test} throws Exception { // Arrange // Act // Assert }
    21. 21. public class EmptyMatcher extends TypeSafeMatcher<Collection <?>> { @Override public boolean matchesSafely(Collection<?> c) { return c.isEmpty(); } public void describeTo(Description desc) { desc.appendText("empty"); } @Factory public static <T> Matcher<? super Collection<?>> isEmpty() { return new EmptyMatcher(); } }
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×