• 使用的测试框架是TestNG

    先看一下被测试的类:

    1. /**
    2. * @author 王广帅
    3. * @date 2021年03月11日 11:19 上午
    4. */
    5. public class GameUtil {
    6. public static boolean isRunGame(int type) {
    7. //暂时用于测试
    8. return type != 0;
    9. }
    10. public static void checkIsDevGame(int type) {
    11. if (isRunGame(type)) {
    12. throw new IllegalArgumentException("不是开发环境");
    13. }
    14. System.out.println("方法被执行了");
    15. }
    16. }

    测试的方法如下:

    1. /**
    2. * @author 王广帅
    3. * @date 2021年03月11日 11:23 上午
    4. */
    5. @PrepareForTest(GameUtil.class)
    6. public class GameUtilTest extends PowerMockTestCase {
    7. @Test
    8. public void testCheckIsDevGame() throws Exception {
    9. PowerMockito.mockStatic(GameUtil.class);
    10. PowerMockito.when(GameUtil.isRunGame(Mockito.anyInt())).thenReturn(false);
    11. //因为上面对GameUtil做了mock操作,所以默认情况下不会执行方法的实体,这里指定,需要执行方法的实体
    12. //下面这样写是错误的,因为when中不接受返回void方法
    13. //PowerMockito.doCallRealMethod().when(GameUtil.checkIsDevGame(Mockito.anyInt()));
    14. //正确的写法
    15. PowerMockito.doCallRealMethod().when(GameUtil.class, "checkIsDevGame", Mockito.anyInt());
    16. //测试方法
    17. GameUtil.checkIsDevGame(1);
    18. }
    19. }