转自:http://blog.youkuaiyun.com/rainbow702/article/details/51783285
相关框架
JUnit4、Mockit、PowerMock
相关maven依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
代码base
后面的测试代码均是针对下面class的
import org.springframework.beans.factory.annotation.Autowired;
public class UserController {
@Autowired
private UserService userService;
public boolean addUser(UserDto userDto) {
int added = userService.addUser(userDto);
if (added <= 0) {
return false;
} else {
return true;
}
}
public boolean delUser(int id) {
try {
userService.delUser(id);
return true;
} catch (Exception e) {
return false;
}
}
public void saveUser(UserDto userDto) {
userService.saveUser(userDto);
}
public int countUser() {
UserDto ud = new UserDto();
int count = 0;
if (ud.getId() > 0) {
count += 1;
}
return count;
}
public boolean modUser(UserDto userDto) {
int moded = userService.modUser(userDto);
return verifyMod(moded);
}
private boolean verifyMod(int moded) {
if (moded <= 0) {
return false;
} else {
return true;
}
}
}
public interface UserService {
int addUser(UserDto userDto);
int delUser(int id) throws Exception;
int modUser(UserDto userDto);
void saveUser(UserDto userDto);
}
public class UserDto {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
public class FileHelper {
public static String getName(String name) {
return "A_" + name;
}
}
相关注解:所有测试类均须加上以下注解
@RunWith(PowerMockRunner.class)
@PrepareForTest({UserController.class, FileHelper.class})
@PowerMockIgnore(“javax.management.*”)
其中:
@RunWith(PowerMockRunner.class) :表明用 PowerMockerRunner来运行测试用例,否则无法使用PowerMock
PrepareForTest({UserController.class}):所有需要测试的类,列在此处,以逗号分隔
@PowerMockIgnore(“javax.management.*”):为了解决使用powermock后,提示classloader错误
java.lang.NoClassDefFoundError: com.ibm.mq.jms.MQQueueConnectionFactoryEnhancerByCGLIBEnhancerByCGLIBEnhancerByCGLIB7cb492ab (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
@Autowired 属性的注入方式
public class UserControllerTest {
@Mock
private UserServ