• 使用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对象代码所在的类。

  • 相关阅读:
    是否可能两个ETH私钥对应同一个地址
    使用 neon-wallet-db + neon-js + NEO-cli /rpc 搭建轻钱包服务端
    从源码看 angular/material2 中 dialog模块 的实现
    个人从源码理解JIT模式下angular编译AppModule的过程
    个人从源码理解angular项目在JIT模式下的启动过程
    使用angular的HttpClient搭配rxjs
    把angular项目整合到.net mvc中
    小程序开发整理
    ABC: Always Be Coding
    postgresql的psql常用命令-4
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/12153148.html
Copyright © 2020-2023  润新知