test mock-07-powermock 入门介绍
2016年4月26日大约 1 分钟
PowerMock
PowerMock is a framework that extends other mock libraries such as EasyMock with more powerful capabilities.
Quick Start
给一个简单的使用范例。
- Project Struct
├─pom.xml
│
├─src
│ ├─main
│ │ └─java
│ │ └─com
│ │ └─ryo
│ │ ├─domain
│ │ │ User.java
│ │ │
│ │ └─service
│ │ │ UserService.java
│ │ │
│ │ └─impl
│ │ UserServiceImpl.java
│ │
│ └─test
│ └─java
│ └─com
│ └─ryo
│ └─service
│ └─impl
│ UserServiceImplTest.java
- pom.xml
用于常用 jar 的引入。
4.0.0
com.ryo
powermock
1.0-SNAPSHOT
4.12
1.10.19
1.6.4
junit
junit
${junit.version}
test
org.mockito
mockito-all
${mockito.version}
org.powermock
powermock-module-junit4
${powermock.version}
test
org.powermock
powermock-api-mockito
${powermock.version}
test
org.mockito
mockito-core
org.hamcrest
hamcrest-core
junit
junit
- User.java
简单定义
public class User {
private String username;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
@Override public String toString(){
return "User{" +
"username='" + username + '\'' +
'}';
}
}
- UserService.java & UserServiceImpl.java
public interface UserService {
User getUser(Long id);
}
public class UserServiceImpl {
public boolean checkId(Long id) {
return privateMethod();
}
private boolean privateMethod() {
System.out.println("call private method.");
return true;
}
}
- UserServiceImplTest.java
@RunWith(PowerMockRunner.class)
@PrepareForTest(UserServiceImpl.class)
public class UserServiceImplTest {
@Mock
private UserService userService;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
mockGetUser();
}
/**
* 对获取的信息进行Mock
*/
private void mockGetUser() {
User user = new User();
user.setUsername("powermock");
Mockito.when(userService.getUser(Mockito.anyLong()))
.thenReturn(user);
}
@Test
public void testGetUser() {
User user = userService.getUser(1L);
System.out.println(user);
}
@Test
public void testCheckId() {
final Long id = 1L;
UserServiceImpl userService = new UserServiceImpl();
userService.checkId(id);
}
@Test
public void testPrivateMock() throws Exception{
final Long id = 1L;
UserServiceImpl userService = PowerMockito.mock(UserServiceImpl.class);
PowerMockito.when(userService.checkId(id)).thenCallRealMethod();
PowerMockito.when(userService, "privateMethod").thenReturn(false);
}
}
贡献者
binbin.hou