zoukankan      html  css  js  c++  java
  • 使用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对象代码所在的类。

  • 相关阅读:
    程序的链接
    Graphviz 画图的一些总结
    C表达式中的汇编指令
    epoll(2) 源码分析
    epoll(2) 使用及源码分析的引子
    eventfd(2) 结合 select(2) 源码分析
    poll(2) 源码分析
    select 源码分析
    kfifo
    程序的机器级表示:寻址方式、指令及栈的运行机制
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/12153148.html
Copyright © 2011-2022 走看看