• 使用PowerMockito.whennew的时候,注解preparefortest里面的类需要是mock的new代码所在的类的对象


    Mock方法内部new出来的对象

           测试目标代码:

    01

    public class ClassUnderTest {

    02

    03

        public boolean callInternalInstance(String path) { 

    04

    05

            File file = new File(path); 

    06

    07

            return file.exists(); 

    08

    09

        } 

    10

    }

           测试用例代码:    

    01

    @RunWith(PowerMockRunner.class) 

    02

    public class TestClassUnderTest {

    03

    04

        @Test 

    05

        @PrepareForTest(ClassUnderTest.class) 

    06

        public void testCallInternalInstance() throws Exception { 

    07

    08

            File file = PowerMockito.mock(File.class); 

    09

    10

            ClassUnderTest underTest = new ClassUnderTest(); 

    11

    12

            PowerMockito.whenNew(File.class).withArguments("bbb").thenReturn(file); 

    13

             

    14

            PowerMockito.when(file.exists()).thenReturn(true); 

    15

    16

            Assert.assertTrue(underTest.callInternalInstance("bbb")); 

    17

        } 

    18

    }

          说明:当使用PowerMockito.whenNew方法时,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是需要mock的new对象代码所在的类。

    Mock方法内部new出来的对象

           测试目标代码:

    01 public class ClassUnderTest {
    02  
    03     public boolean callInternalInstance(String path) { 
    04  
    05         File file = new File(path); 
    06  
    07         return file.exists(); 
    08  
    09     
    10 }

           测试用例代码:    

    01 @RunWith(PowerMockRunner.class
    02 public class TestClassUnderTest {
    03  
    04     @Test 
    05     @PrepareForTest(ClassUnderTest.class
    06     public void testCallInternalInstance() throws Exception { 
    07  
    08         File file = PowerMockito.mock(File.class); 
    09  
    10         ClassUnderTest underTest = new ClassUnderTest(); 
    11  
    12         PowerMockito.whenNew(File.class).withArguments("bbb").thenReturn(file); 
    13          
    14         PowerMockito.when(file.exists()).thenReturn(true); 
    15  
    16         Assert.assertTrue(underTest.callInternalInstance("bbb")); 
    17     
    18 }

          说明:当使用PowerMockito.whenNew方法时,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是需要mock的new对象代码所在的类。

  • 相关阅读:
    web.xml中openEntityManagerInViewFilter的作用(转)
    JNDI解读(转)
    Java读取大文件的高效率实现
    快速入门react
    谈一谈我所了解的https
    漫谈JWT
    Java 中的几种线程池这么用才是对的
    用Vue来实现图片上传多种方式
    一个页面从输入URL到页面加载显示完成,这个过程都发生什么?
    “===”与“==”的区别
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/12153148.html
Copyright © 2020-2023  润新知