Java反射调用未知的方法


背景:在接口测试中档参数从Excel、cvs等外部数据源取数据时,会遇到这样的情况,接口当中某个参数需要传一个动态的值,比如说时间戳,需要获取当前时间。

解决方法:可以单独编写方法,在数据源中此参数的值设置为我们预先写好的方法,程序通过此方法得到想要的数据并传入参数

难点:方法和方法所在的类,对于拥有固定运行逻辑的接口执行程序是未知的。调用已知方法在网上有很多资料,不多阐述。

 

首先,编写需要被调用的类和方法

 

然后编写调用方法,将需要被调用的方法路径当做参数传入

 

最后写一个简单的单元测试

 

 

附源码:

package demo.ref;

import java.text.SimpleDateFormat;

import java.util.Date;

public classTargetClass {

  publicString getCurrencyTime(){

     StringcurrencyTime = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(new Date());

     returncurrencyTime;

  }

}



package demo.ref;

import java.lang.reflect.Method;

public classReflectDemoClass {

  publicvoid invokedMethod(String methodPath) throws ClassNotFoundException,ReflectiveOperationException, SecurityException{

     String[]methodInfo = methodPath.split("\\.");

     StringmethodName = methodInfo[methodInfo.length-1];

     StringclassName = methodPath.substring(0,methodPath.length()-methodName.length()-1);

    

     Class<?>targetClass = Class.forName(className);

     MethodtargetMethod = targetClass.getDeclaredMethod(methodName);

     Stringtime = (String)targetMethod.invoke(targetClass.newInstance());

     System.out.println(time);

  }

}

 

 

package demo.ref;

import org.junit.Test;

public classReflectDemoClassTest {

  @Test

  publicvoid test() throws ClassNotFoundException, SecurityException,ReflectiveOperationException {

     ReflectDemoClassdemo = new ReflectDemoClass();

     demo.invokedMethod("demo.ref.MethodDemo.getCurrencyTime");

  }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值