+ All Categories
Home > Documents > Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software...

Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software...

Date post: 06-Jan-2018
Category:
Upload: polly-morgan
View: 220 times
Download: 3 times
Share this document with a friend
Description:
Motivation Mock Me If You Can - An Introduction to the Mocking Framework Mockito How to test a TcpReader‘s functionality without establishing a real TCP connection? Christian Wulf ― serverSocket socketChannel
13
Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering Group Kiel University, Germany
Transcript
Page 1: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Mock Me If You Can

An Introduction to the Mocking Framework Mockito

Symposium on Software Performance 2014

Christian Wulf ― 26.11.2014

Software Engineering GroupKiel University, Germany

Page 2: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Motivation

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• How to check that the underlying input stream is called only once?

Christian Wulf ― 26.11.2014 2

Page 3: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Motivation

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• How to test a TcpReader‘s functionality without establishing a real TCP connection?

Christian Wulf ― 26.11.2014 3

• serverSocket• socketChannel

Page 4: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Mockito

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• Mockito library enables – mocks creation, – stubbing, and– verification

Christian Wulf ― 26.11.2014 4

• Started on 11.11.2007• Current version 1.10.13

Page 5: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

When to Use

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

When the CUD requires external (I/O) resources to work properly, e.g.,– InputStream/OutputStream– ServerSocket/ClientSocket– File– Queue

Christian Wulf ― 26.11.2014 5

Page 6: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Mocking Methodology

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

Setup• Mocking a type instantiation• Mocking a method call (a.k.a. stubbing)Assertion• Verifying a method call

Christian Wulf ― 26.11.2014 6

Page 7: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Mocking

Mock Me If You Can - An Introduction to the Mocking Framework Mockito Christian Wulf ― 26.11.2014 7

• Mock => types, i.e., interfaces, abstract classes, classes• Spy => instances

Necessary for verification

Page 8: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Stubbing

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• doReturn(Object)• doThrow(Throwable)

– doThrow(new RuntimeException()).when(mockedList).clear();

• doThrow(Class)• doAnswer(Answer)• doNothing()• doCallRealMethod()

Christian Wulf ― 26.11.2014 8

Page 9: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Verifying

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• verify(mockedList).add("one");• verify(mockedList).get(anyInt());• verify(mockedList, times(3)).add("three times");• verify(mockedList, atMost(5)).add("three times");• InOrder inOrder = inOrder(firstMock, secondMock);• verify(mockOne, never()).add("two");• verifyZeroInteractions(mockTwo, mockThree);• verify(mock, timeout(100).times(1)).someMethod();

Christian Wulf ― 26.11.2014 9

Page 10: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Annotation-based Usage

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• Minimizes repetitive mock creation code.• Makes the test class more readable.• Makes the verification error easier to read because the field name is

used to identify the mock.

Christian Wulf ― 26.11.2014 10

Page 11: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Limitations

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• Mockito doesn't mock final methods– AbstractInterruptibleChannel.close()

• Mockito doesn't mock static methods– ServerSocketChannel.open();

Christian Wulf ― 26.11.2014 11

Page 12: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

Conclusions

Mock Me If You Can - An Introduction to the Mocking Framework Mockito Christian Wulf ― 26.11.2014 12

External resources• InputStream/OutputStream• ServerSocket/ClientSocket• File• Queue

Alternative Mocking Framework for Java:

Page 13: Mock Me If You Can An Introduction to the Mocking Framework Mockito Symposium on Software Performance 2014 Christian Wulf ― 26.11.2014 Software Engineering.

References

Mock Me If You Can - An Introduction to the Mocking Framework Mockito

• Mockito:– http://www.mockito.org/

• PowerMock:– https://code.google.com/p/powermock/

• EasyMock– http://easymock.org/

Christian Wulf ― 26.11.2014 13


Recommended