Mockito 使用

1. 算术测试类

1 package com.smart.test.mockito;
2 
3 public interface Calculator {
4     public int add(int a, int b);
5 }

 

 1 package com.smart.test.mockito;
 2 
 3 public class CalculatorImpl implements Calculator {
 4 
 5     @Override
 6     public int add(int a, int b) {
 7         System.out.println("add(" + a + ", " + b + ") = " + (a + b));
 8         return a + b;
 9     }
10     
11     public int minus(int a, int b) {
12         System.out.println("minus(" + a + ", " + b + ") = " + (a - b));
13         return a - b;
14     }
15 }

 2. 用户测试类

 1 package com.smart.test.mockito;
 2 
 3 public class User {
 4     
 5     private String name;
 6     
 7     private String password;
 8     
 9     public User() {}
10     
11     public User(String name, String password) {
12         this.name = name;
13         this.password = password;
14     }
15 
16     public String getName() {
17         return name;
18     }
19 
20     public void setName(String name) {
21         this.name = name;
22     }
23 
24     public String getPassword() {
25         return password;
26     }
27 
28     public void setPassword(String password) {
29         this.password = password;
30     }
31 }
 1 package com.smart.test.mockito;
 2 
 3 public interface UserService {
 4     
 5     public User findUserByUserName(String name);
 6     
 7     public boolean hasMatchUser(String name, String password);
 8     
 9     public void registerUser(User user);
10 }
 1 package com.smart.test.mockito;
 2 
 3 public class UserServiceImpl implements UserService {
 4 
 5     @Override
 6     public User findUserByUserName(String name) {
 7         // TODO Auto-generated method stub
 8         return null;
 9     }
10 
11     @Override
12     public boolean hasMatchUser(String name, String password) {
13         // TODO Auto-generated method stub
14         return false;
15     }
16 
17     @Override
18     public void registerUser(User user) {
19         // TODO Auto-generated method stub
20         
21     }
22 }

 

3. 测试驱动类

 1 package com.smart.test.mockito;
 2 
 3 import static org.mockito.Mockito.*;
 4 import static junit.framework.Assert.*;
 5 import org.junit.Before;
 6 import org.junit.Test;
 7 import org.mockito.Mock;
 8 import org.mockito.MockitoAnnotations;
 9 
10 public class MockitoSampleTest {
11     
12     CalculatorImpl mockCalculatorImpl = mock(CalculatorImpl.class);
13     
14     @Mock
15     UserService mockUserService;
16     @Mock
17     UserServiceImpl mockUserServiceImpl;
18     @Mock
19     User mockUser;
20     
21     @Before
22     public void initMocks() {
23         /*
24          *  初始化当前测试类的所有@Mock注解模拟对象
25          */
26         MockitoAnnotations.initMocks(this);
27     }
28     
29     @Test
30     public void testMockCalculator() {
31         
32         when(mockCalculatorImpl.add(3, 4)).thenReturn(6);
33         int c = mockCalculatorImpl.add(3, 4);
34         assertEquals(c, 7);
35         
36         doReturn(2).when(mockCalculatorImpl).minus(3, 1);
37         int d = mockCalculatorImpl.minus(3, 1);
38         assertEquals(d, 2);
39     }
40     
41     @Test
42     public void testMockUserService() {
43         /*
44          *  对 public User findUserByUserName(String name) 方法设定返回值
45          *  模拟入参“tom”, 返回一个new User("tom", "1234")对象
46          */
47         when(mockUserService.findUserByUserName("tom")).thenReturn(new User("tom", "1234"));
48         
49         /*
50          *  对 public boolean hasMatchUser(String name, String password) 方法设定返回值
51          *  模拟入参hasMatchUser("asn", "1234") 返回 true
52          */
53         doReturn(true).when(mockUserService).hasMatchUser("asn", "1234");
54         
55         /*
56          *  对 public void registerUser(User user) 方法设定返回值
57          *  模拟入参 new User("John", "1234")能够顺利执行,返回值类型为void
58          */
59         doNothing().when(mockUserService).registerUser(new User("John", "1234"));
60         
61         //调用测试目标方法
62         User user = mockUserService.findUserByUserName("tom");
63         boolean isMatch = mockUserService.hasMatchUser("asn", "1234");
64         mockUserService.registerUser(new User("John", "1234"));
65         
66         //断言结果
67         System.out.println(user.getName() + ", " + user.getPassword());
68         System.out.println(isMatch);
69     }
70     
71     
72     @Test
73     public void testMockUser() {
74         
75         /*
76          * 对。。。方法进行模拟测试
77          *     public String getName() {
78                 return name;
79             }
80          * 设定模拟对象mockUser上getName()方法的返回值为“tom”
81          */
82         when(mockUser.getName()).thenReturn("tom");
83         
84         assertEquals(mockUser.getName(), "tom");
85     }
86 }

 

posted @ 2015-01-05 17:31  asnjudy  阅读(421)  评论(0编辑  收藏  举报