Skip to content

Commit e6e250a

Browse files
committed
add mockito test case
1 parent e3881b2 commit e6e250a

17 files changed

+385
-0
lines changed

.idea/uiDesigner.xml

Lines changed: 124 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.mockito.Mockito.mock;
5+
import static org.mockito.Mockito.verify;
6+
7+
import java.util.List;
8+
9+
import org.junit.Test;
10+
import org.mockito.ArgumentCaptor;
11+
import org.mockito.Mockito;
12+
13+
public class CapturingArguments09 {
14+
@Test
15+
public void test() {
16+
@SuppressWarnings("unchecked")
17+
List<String> list = mock(List.class);
18+
list.add("one");
19+
list.add("two");
20+
21+
ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
22+
verify(list,Mockito.times(2)).add(argument.capture());
23+
// assertEquals("one", argument.getValue());
24+
25+
List<String> list1 =argument.getAllValues();
26+
assertEquals("one",list1.get(0));
27+
assertEquals("two",list1.get(1));
28+
}
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import static org.junit.Assert.assertFalse;
4+
import static org.junit.Assert.assertNotNull;
5+
import static org.mockito.Mockito.*;
6+
7+
import java.util.Iterator;
8+
import java.util.List;
9+
10+
import org.junit.Test;
11+
import org.mockito.Mockito;
12+
13+
public class DeepMocking {
14+
@Test
15+
public void test(){
16+
@SuppressWarnings("unchecked")
17+
List<String> mockedList = mock(List.class,Mockito.RETURNS_DEEP_STUBS);
18+
//Mockito.when(mockedList.iterator()).thenReturn();
19+
Iterator<String> iterator1 = mockedList.iterator();
20+
doReturn("aaa").doReturn(null).when(iterator1).next();
21+
//.thenReturn(null);
22+
Iterator<String> iterator = iterator1;
23+
assertNotNull(iterator);
24+
assertFalse(iterator.hasNext());
25+
assertNotNull(iterator.next());
26+
assertNotNull(iterator.next());
27+
}
28+
}
29+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import java.util.List;
4+
import org.junit.Test;
5+
import static org.mockito.Mockito.*;
6+
7+
public class FindingRedundantInvocations06 {
8+
@Test
9+
public void test(){
10+
@SuppressWarnings("unchecked")
11+
List<String> mockedList = mock(List.class);
12+
//using mocks
13+
mockedList.add("one");
14+
mockedList.add("two");
15+
16+
verify(mockedList).add("one");
17+
verify(mockedList).add("two");
18+
//following verification will fail
19+
verifyNoMoreInteractions(mockedList);
20+
}
21+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import java.util.List;
4+
import org.junit.Test;
5+
import static org.mockito.Mockito.*;
6+
7+
public class MakingSureInteractionNeverHappenedOnMock05 {
8+
@Test
9+
public void test() {
10+
@SuppressWarnings("unchecked")
11+
List<String> mockOne = mock(List.class);
12+
@SuppressWarnings({ "unchecked", "unused" })
13+
List<String> mockTwo = mock(List.class);
14+
@SuppressWarnings("unchecked")
15+
List<String> mockThree = mock(List.class);
16+
17+
//using mocks - only mockOne is interacted
18+
mockOne.add("one");
19+
20+
//ordinary verification
21+
verify(mockOne).add("one");
22+
23+
//verify that method was never called on a mock
24+
verify(mockOne, never()).add("two");
25+
26+
//verify that other mocks were not interacted
27+
verifyZeroInteractions(mockOne, mockThree);
28+
}
29+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.mockito.Matchers.anyInt;
5+
import static org.mockito.Matchers.anyString;
6+
import static org.mockito.Mockito.mock;
7+
import static org.mockito.Mockito.when;
8+
9+
import java.util.LinkedList;
10+
import org.junit.Test;
11+
import org.mockito.Mockito;
12+
13+
public class RealPartialMocks10 {
14+
@Test
15+
public void test(){
16+
//you can create partial mock with spy() method:
17+
18+
@SuppressWarnings("unchecked")
19+
LinkedList<String> list1 = mock(LinkedList.class);
20+
//Be sure the real implementation is 'safe'.
21+
//If real implementation throws exceptions or depends on specific state of the object then you're in trouble.
22+
23+
when(list1.add("xx")).thenCallRealMethod();
24+
when(list1.get(anyInt())).thenCallRealMethod();
25+
when(list1.size()).thenCallRealMethod();
26+
list1.add("aaa");
27+
//assertEquals("aaa", list1.get(0));
28+
//assertEquals(1, list1.size());
29+
}
30+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import static org.mockito.Mockito.verify;
4+
5+
import java.util.List;
6+
import org.junit.Before;
7+
import org.junit.Test;
8+
import org.junit.runner.RunWith;
9+
10+
import org.mockito.Mock;
11+
import org.mockito.MockitoAnnotations;
12+
import org.mockito.runners.MockitoJUnitRunner;
13+
14+
@RunWith(MockitoJUnitRunner.class)
15+
public class ShorthandForMocksCreation07 {
16+
@Mock List<String> mockedList;
17+
//@Before
18+
public void before(){
19+
MockitoAnnotations.initMocks(this);
20+
}
21+
22+
@Test
23+
public void test(){
24+
//using mocks
25+
mockedList.add("one");
26+
verify(mockedList).add("one");
27+
}
28+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.mockito.Mockito.spy;
5+
import static org.mockito.Mockito.verify;
6+
import static org.mockito.Mockito.when;
7+
8+
import java.util.LinkedList;
9+
import java.util.List;
10+
11+
import org.junit.Test;
12+
13+
public class SpyingOnRealObjects08 {
14+
@Test
15+
public void test() {
16+
List<String> list = new LinkedList<String>();
17+
List<String> spy = spy(list);
18+
19+
// optionally, you can stub out some methods:
20+
when(spy.size()).thenReturn(100);
21+
22+
// using the spy calls *real* methods
23+
spy.add("one");
24+
spy.add("two");
25+
26+
// prints "one" - the first element of a list
27+
System.out.println(spy.get(0));
28+
29+
// size() method was stubbed - 100 is printed
30+
int spySize =spy.size();
31+
System.out.println("Spy size"+spySize);
32+
int listSize = list.size();
33+
System.out.println("list size"+listSize);
34+
35+
assertEquals(100,spySize);
36+
assertEquals(0,listSize);
37+
38+
assertEquals(spy.get(0),"one");
39+
//assertEquals(list.get(0),"one");
40+
41+
// optionally, you can verify
42+
verify(spy).add("one");
43+
verify(spy).add("two");
44+
}
45+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package tech.rongxing.devops.mockito;
2+
3+
import java.util.List;
4+
import org.junit.Test;
5+
6+
import static org.mockito.Mockito.*;
7+
import org.mockito.InOrder;
8+
9+
public class VerificationInOrder04 {
10+
@Test
11+
public void test() {
12+
// A. Single mock whose methods must be invoked in a particular order
13+
@SuppressWarnings("unchecked")
14+
List<String> singleMock = mock(List.class);
15+
16+
// using a single mock
17+
singleMock.add("was added first");
18+
singleMock.add("was added second");
19+
20+
// create an inOrder verifier for a single mock
21+
InOrder inOrder = inOrder(singleMock);
22+
23+
// following will make sure that add is first called with
24+
// "was added first, then with "was added second"
25+
26+
inOrder.verify(singleMock).add("was added first");
27+
inOrder.verify(singleMock).add("was added second");
28+
29+
// B. Multiple mocks that must be used in a particular order
30+
@SuppressWarnings("unchecked")
31+
List<String> firstMock = mock(List.class);
32+
@SuppressWarnings("unchecked")
33+
List<String> secondMock = mock(List.class);
34+
35+
// using mocks
36+
firstMock.add("was called first");
37+
secondMock.add("was called second");
38+
39+
// create inOrder object passing any mocks that need to be verified in
40+
// order
41+
InOrder inOrder1= inOrder(firstMock, secondMock);
42+
43+
// following will make sure that firstMock was called before secondMock
44+
45+
inOrder1.verify(firstMock).add("was called first");
46+
inOrder1.verify(secondMock).add("was called second");
47+
48+
// Oh, and A + B can be mixed together at will
49+
}
50+
}
Binary file not shown.

0 commit comments

Comments
 (0)