栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

25.反射、Junit、获取Class对象、获取构造方法、获取成员方法、获取成员变量、案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

25.反射、Junit、获取Class对象、获取构造方法、获取成员方法、获取成员变量、案例

一、Junit

1.Junit主要用于做局部测试,局部测试 局部测试可以快速帮助查找bug

2.测试分类:黑盒测试与白盒测试

3.黑盒测试:功能测试(按照需求的文档来进行测试)与接口测试 比较简单

4.白盒测试:测开编写自动化的脚本

5.Junit使用步骤

定义一个方法  (方法修饰符public  返回值只能使用void)

在方法上加上注解@Test

jar下载地址:https://mvnrepository.com/

新建一个lib文件

将jar放到lib目录下

将jar添加项目依赖

二、反射的概念

1.所有的框架都使用了反射技术

        java中所有类在反射面前都是裸体(可以通过反射获取到所有的资源,包括私有的)

2.反射机制:将类的各个部分组成一个新的对象Class对象

三、获取Class对象

1、通过调用类的getClass方法进行获取,对象.getClass()

2.通过当前类名.class来获取

3.通过Class.forName(完整的包名+类名) 最常用,

四、获取构造方法

 

五、获取成员方法

 

六、获取成员变量

 七、案例

不改变java代码任意获取类中的方法

通过配置文件将需要的数据传输进去(properties文件键值对)

代码-需要获取方法的类

package com.getmethod;

public class Student {
    private String name;
    private int pws;

    public Student() {
    }

    public static void show(String name,int pwd){
        System.out.println(name);
        System.out.println(pwd);
    }
}

配置文件 admin.properties

代码-配置文件工具类

package com.getmethod;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Properutils {
    private static Properutils properutils;
    private static Properties properties;

    private Properutils(){
        properties=new Properties();
        InputStream resourceAsStream =Properutils.class.getResourceAsStream("admin.properties");
        try {
            properties.load(resourceAsStream);
            resourceAsStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static synchronized Properutils getIntance(){
        if (properutils==null){
            properutils=new Properutils();
        }
        return properutils;
    }

    public static String getValue(String key){
        return properties.getProperty(key);
    }
}

代码-测试类

 @Test
    public void show2() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        String className = Properutils.getIntance().getValue("ClassName");
        String methodName = Properutils.getIntance().getValue("MethodName");
        String parm = Properutils.getIntance().getValue("parm");
        String typeName = Properutils.getIntance().getValue("TypeName");

        Class aClass = Class.forName(className);
        Object o = aClass.newInstance();

        Constructor constructor = aClass.getConstructor();
        Object o1 = constructor.newInstance();

        Class[] getclass = getclass(parm);
        Object[] getty = getobj(parm, typeName);

        if (getclass == null && getclass.length <= 0) {
            Method declaredMethod = aClass.getDeclaredMethod(methodName);
            declaredMethod.invoke(o);
        } else {

            Method declaredMethod = aClass.getDeclaredMethod(methodName, getclass);
            declaredMethod.invoke(o, getty);
        }
    }

    public static Class[] getclass(String parm){
        if (parm==null||"".equals(parm)){
            return null;
        }else {
            List li=new ArrayList<>();
            String[] split = parm.split(",");
            for (String s:split){
                if (s.equals("String")){
                    li.add(String.class);
                }else if (s.equals("int")){
                    li.add(int.class);
                }else{
                    li.add(Object.class);
                }
            }
            Class[] classes = li.toArray(new Class[li.size()]);
            return classes;
        }
    }
    public static Object[] getobj(String parm,String typeName){
        if (parm==null||"".equals(parm)||typeName==null||"".equals(typeName)){
            return null;
        }else{
            List li=new ArrayList<>();
            String[] split = parm.split(",");
            String[] split1 = typeName.split(",");
            for (int i=0;i 

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号