0% found this document useful (0 votes)
293 views14 pages

Mockito PDF

Mockito is a framework for unit testing Java applications. It allows creating and configuring test doubles of real objects to verify interactions with them. Some key capabilities of Mockito include: 1. Creating test doubles ("mocks") of objects to isolate dependencies and make them testable. 2. Configuring mock behavior using stubs to define return values or exceptions. 3. Verifying interactions with mocks to assert certain methods were called as expected. 4. Matchers can be used in verification to make assertions less brittle to specific argument values. 5. Order of interactions can be verified for both single and multiple mocks.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
293 views14 pages

Mockito PDF

Mockito is a framework for unit testing Java applications. It allows creating and configuring test doubles of real objects to verify interactions with them. Some key capabilities of Mockito include: 1. Creating test doubles ("mocks") of objects to isolate dependencies and make them testable. 2. Configuring mock behavior using stubs to define return values or exceptions. 3. Verifying interactions with mocks to assert certain methods were called as expected. 4. Matchers can be used in verification to make assertions less brittle to specific argument values. 5. Order of interactions can be verified for both single and multiple mocks.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Mockito

Diferentes dubls:
Verificar comunicao (Interaes)
Stub (when-thenReturn)
Runtime Exceptions
Verifica Exceptions
Usa matchers (Hamcrest)
Nmero de invocaes
Ordem de chamada
verifica chamada
Ordem de chamada
Inline
Callbacks
Verificar o comportamento
import static org.mockito.Mockito.*;
import java.util.List;
public class AvaliaMockito {
public void avalia_Mockito() {
// criao do mock
List mockedList = mock(List.class);
// solicitando o objeto falso
mockedList.add("Produto1");
mockedList.clear();
// verificando se foi usado
// retorna true ou false dependendo do uso e parmetros
verify(mockedList).add("Produto1");
verify(mockedList).clear();
}
}
Stub (when-thenReturn)
Runtime Exceptions
public static void avalia_Mockito() {
//You can mock concrete classes, not only interfaces
LinkedList mockedList = mock(LinkedList.class);
doThrow(new RuntimeException()).when(mockedList).
clear();
//following throws RuntimeException:
mockedList.clear();
}
Verifica uso de Exceptions
public static void avalia_Mockito() {
//You can mock concrete classes, not only interfaces
LinkedList mockedList = mock(LinkedList.class);
//stubbing
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(1)).thenThrow(new RuntimeException());
//following prints "first"
System.out.println(mockedList.get(0));
//following throws runtime exception
try { System.out.println(mockedList.get(1));
} catch (Exception e) {}
//following prints "null" because get(999) was not stubbed
System.out.println(mockedList.get(999));
//it is possible to verify a stub, usually it's just redundant
verify(mockedList).get(0); }
Usa matchers (Hamcrest)
public static void avalia_Mockito() {
//You can mock concrete classes, not only interfaces
LinkedList mockedList = mock(LinkedList.class);
//stubbing using built-in anyInt() argument matcher
when(mockedList.get(anyInt())).thenReturn("element");
//stubbing using hamcrest (let's say isValid() returns your own hamcrest
matcher):
when(mockedList.contains(argThat(isValid()))).thenReturn(false);
//following prints "element"
System.out.println(mockedList.get(999));
//you can also verify using an argument matcher
verify(mockedList).get(anyInt()); }
Nmero de invocaes
public static void avalia_Mockito() {
//You can mock concrete classes, not only interfaces
LinkedList mockedList = mock(LinkedList.class);
//using mock
mockedList.add("once");
mockedList.add("twice");
mockedList.add("twice");
mockedList.add("three times");
mockedList.add("three times");
mockedList.add("three times");
//following two verifications work exactly the same - times(1) is used by default
verify(mockedList).add("once");
verify(mockedList, times(1)).add("once");
//exact number of invocations verification
verify(mockedList, times(2)).add("twice");
verify(mockedList, times(3)).add("three times");
//verification using never(). never() is an alias to times(0)
verify(mockedList, never()).add("never happened");
//verification using atLeast()/atMost()
verify(mockedList, atLeastOnce()).add("three times");
verify(mockedList, atLeast(2)).add("five times");
verify(mockedList, atMost(5)).add("three times");
}
Ordem de chamada
public static void avalia_Mockito() {
// A. Single mock whose methods must be invoked in a particular order
List singleMock = mock(List.class);
//using a single mock
singleMock.add("was added first");
singleMock.add("was added second");
//create an inOrder verifier for a single mock
InOrder inOrder = inOrder(singleMock);
//following will make sure that add is first called with "was added first, then with "was added second"
inOrder.verify(singleMock).add("was added first");
inOrder.verify(singleMock).add("was added second");
// B. Multiple mocks that must be used in a particular order
List firstMock = mock(List.class);
List secondMock = mock(List.class);
//using mocks
firstMock.add("was called first");
secondMock.add("was called second");
//create inOrder object passing any mocks that need to be verified in order
InOrder inOrder2 = inOrder(firstMock, secondMock);
//following will make sure that firstMock was called before secondMock
inOrder2.verify(firstMock).add("was called first");
inOrder2.verify(secondMock).add("was called second");
}
Verificando as chamadas
public static void avalia_Mockito() {
List mockOne = mock(List.class);
List mock2 = mock(List.class);
List mock3 = mock(List.class);
//using mocks - only mockOne is interacted
mockOne.add("one");
//ordinary verification
verify(mockOne).add("one");
//verify that method was never called on a mock
verify(mockOne, never()).add("two");
//verify that other mocks were not interacted
verifyZeroInteractions(mock2, mock3);
}
Anotaes
public class ArticleManagerTest extends SampleBaseTestCase {
@Mock private ArticleCalculator calculator;
@Mock private ArticleDatabase database;
@Mock private UserProvider userProvider;
private ArticleManager manager;
@Before public void setup() {
manager = new ArticleManager(userProvider, database, calculator);
}
}
public class SampleBaseTestCase {
@Before public void initMocks() {
MockitoAnnotations.initMocks(this);
}
}
Inline (consecutivos)
public static void avalia_Mockito() {
ObjetoTeste mock = mock(ObjetoTeste.class);
when(mock.umMetodoQualquer("some arg"))
.thenThrow(new RuntimeException())
.thenReturn("foo"); // ou (one, two, three);
//First call: throws runtime exception:
mock.umMetodoQualquer("some arg");
//Second call: prints "foo"
System.out.println(mock.umMetodoQualquer("some arg"));
//Any consecutive call: prints "foo" as well (last stubbing wins).
System.out.println(mock.umMetodoQualquer("some arg"));
}
Callback
public static void avalia_Mockito() {
ObjetoTeste mock = mock(ObjetoTeste.class);
when(mock.umMetodoQualquer(anyString())).thenAnswer(new Answer()
{
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
Object mock = invocation.getMock();
return "called with arguments: " + args;
}
});
//Following prints "called with arguments: foo"
System.out.println(mock.umMetodoQualquer("foo"));
}
Referncias
Mockito - https://code.google.com/p/mockito/

You might also like