JMockit使用实例<四>mock某个类的常量值

  • 关键词:mock 常量的mock
  • 源类清单
    public static class ClassWithConstant {
             private static final Integer ANSWER = 42 ;
     
             public static final int getAnswer() {
                 return ANSWER;
             }
         }
  • 单元测试类清单
    public class ClassWithConstantTest {
     
     
         @Test
         public void test() {
             killThreadLocal(ClassWithConstant. class .getName(), "ANSWER" );
             Deencapsulation.setField(ClassWithConstant. class , 43 );
             assertEquals( 43 , new ClassWithConstant().getAnswer());
         }
     
         //use reflection to remove the final modifier first
         private void killThreadLocal(String klazzName, String fieldName) {
             try {
             Field field = Class.forName(klazzName).getDeclaredField(fieldName);
             field.setAccessible( true );
             Field modifiersField = Field. class .getDeclaredField( "modifiers" );
             modifiersField.setAccessible( true );
             int modifiers = modifiersField.getInt(field);
             modifiers &= ~Modifier.FINAL;
             modifiersField.setInt(field, modifiers);
             field.set( null , null );
             } catch (Exception e){
     
             }
    }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值