- 使用的测试框架是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 {@Testpublic 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);}}
