- 使用的测试框架是TestNG
先看一下被测试的类:
/**
* @author 王广帅
* @date 2021年03月11日 11:19 上午
*/
public class GameUtil {
public static boolean isRunGame(int type) {
//暂时用于测试
return type != 0;
}
public static void checkIsDevGame(int type) {
if (isRunGame(type)) {
throw new IllegalArgumentException("不是开发环境");
}
System.out.println("方法被执行了");
}
}
测试的方法如下:
/**
* @author 王广帅
* @date 2021年03月11日 11:23 上午
*/
@PrepareForTest(GameUtil.class)
public class GameUtilTest extends PowerMockTestCase {
@Test
public void testCheckIsDevGame() throws Exception {
PowerMockito.mockStatic(GameUtil.class);
PowerMockito.when(GameUtil.isRunGame(Mockito.anyInt())).thenReturn(false);
//因为上面对GameUtil做了mock操作,所以默认情况下不会执行方法的实体,这里指定,需要执行方法的实体
//下面这样写是错误的,因为when中不接受返回void方法
//PowerMockito.doCallRealMethod().when(GameUtil.checkIsDevGame(Mockito.anyInt()));
//正确的写法
PowerMockito.doCallRealMethod().when(GameUtil.class, "checkIsDevGame", Mockito.anyInt());
//测试方法
GameUtil.checkIsDevGame(1);
}
}