当前位置: 首页 > news >正文

Day29-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\reflect

单元测试

Junit单元测试框架

image-20251102135201351

image-20251102135232487

package Basic.src.com.Junit;public class StringUtil {public static void printNumber(String name) {if (name == null) {System.out.println(0);return;//停掉方法}System.out.println("名字的长度是:"+name.length());}/*** 求字符串最大索引*/public static int getMaxIndex(String data){if(data==null||data.length()==0){return -1;}return data.length()-1;}
}
package Basic.src.com.Junit;import org.junit.Assert;
import org.junit.Test;/*** 测试类*/
public class StringUtilTest {@Test //测试方法,要先导入框架才不会报错public void testPrintNumber(){//测试方法一定是公开无返回值无参数StringUtil.printNumber("admin");StringUtil.printNumber(null);}@Testpublic void testGetMaxIndex(){int index1 = StringUtil.getMaxIndex(null);System.out.println(index1);int index2 = StringUtil.getMaxIndex("admin");System.out.println(index2);//断言机制:程序员可以通过预测业务方法的结果Assert.assertEquals("wrong",4,index2);}
}

image-20251102172758208

image-20251102174348747

package Basic.src.com.Junit;import org.junit.*;import java.net.Socket;/*** 测试类*/
public class StringUtilTest {//private Socket socket;private static Socket socket;@BeforeClass//初始化资源public static void setUpBeforeClass() throws Exception {System.out.println("---------setUpBeforeClass 执行了----------------");socket = new Socket("127.0.0.1", 9999);}@AfterClass//释放资源public static void tearDownAfterClass() throws Exception {System.out.println("---------tearDownAfterClass 执行了----------------");socket.close();}@Before//可以用来写环境准备的代码public void test1(){System.out.println("------->test1 before 执行了---------------");//socket = new Socket();//连接}@Afterpublic void test2(){System.out.println("------->test2 before 执行了---------------");//socket.close();}@Test //测试方法,要先导入框架才不会报错public void testPrintNumber(){//测试方法一定是公开无返回值无参数StringUtil.printNumber("admin");StringUtil.printNumber(null);}@Testpublic void testGetMaxIndex(){int index1 = StringUtil.getMaxIndex(null);System.out.println(index1);int index2 = StringUtil.getMaxIndex("admin");System.out.println(index2);//断言机制:程序员可以通过预测业务方法的结果Assert.assertEquals("wrong",4,index2);}
}

反射

image-20251102175340151

image-20251102175404706

package Basic.src.com.reflect;public class Test1Class {public static void main(String[] args) throws Exception {Class<Student> c1 = Student.class;System.out.println(c1.getName());//全类名System.out.println(c1.getSimpleName());//简名 Student//Class.forName(c1.getName());Class<?> c2 = Class.forName("Basic.src.com.reflect.Student");System.out.println(c1 == c2);Student s = new Student();Class<? extends Student> c3 = s.getClass();System.out.println(c2 == c3);}
}

image-20251102194147028

package Basic.src.com.reflect;import org.junit.Test;import java.lang.reflect.Constructor;public class Test2Constructor {@Testpublic void testGetConstructors(){//1.反射第一步,必须要先得到这个类的Class对象Class<Cat> c = Cat.class;//2.获取类的全部构造器//Constructor<?>[] constructors = c.getConstructors();//只能拿到被public修饰的构造器Constructor<?>[] declaredConstructors = c.getDeclaredConstructors();//获取全部构造器//3.遍历确认for (Constructor<?> declaredconstructor : declaredConstructors) {System.out.println(declaredconstructor.getName()+"----------"+declaredconstructor.getParameterCount());//Basic.src.com.reflect.Cat----------0无参//Basic.src.com.reflect.Cat----------2}Student student = new Student();}@Testpublic void testGetConstructor() throws Exception {//1.反射第一步,必须要先得到这个类的Class对象Class<Cat> c = Cat.class;//2.获取某一个构造器(这里是无参构造器)//Constructor<Cat> constructor = c.getConstructor();//只能拿public修饰的Constructor<Cat> constructor = c.getDeclaredConstructor();//都能拿//3.获取有参构造器Constructor<Cat> declaredConstructor = c.getDeclaredConstructor(String.class, int.class);//要写上.class,私有的也可以拿到System.out.println(declaredConstructor.getName()+"----------"+declaredConstructor.getParameterCount());}
}

image-20251102194356765

package Basic.src.com.reflect;import org.junit.Test;import java.lang.reflect.Constructor;public class Test2Constructor {@Testpublic void testGetConstructors(){//1.反射第一步,必须要先得到这个类的Class对象Class<Cat> c = Cat.class;//2.获取类的全部构造器//Constructor<?>[] constructors = c.getConstructors();//只能拿到被public修饰的构造器Constructor<?>[] declaredConstructors = c.getDeclaredConstructors();//获取全部构造器//3.遍历确认for (Constructor<?> declaredconstructor : declaredConstructors) {System.out.println(declaredconstructor.getName()+"----------"+declaredconstructor.getParameterCount());//Basic.src.com.reflect.Cat----------0无参//Basic.src.com.reflect.Cat----------2}Student student = new Student();}@Testpublic void testGetConstructor() throws Exception {//1.反射第一步,必须要先得到这个类的Class对象Class<Cat> c = Cat.class;//2.获取某一个构造器(这里是无参构造器)//Constructor<Cat> constructor = c.getConstructor();//只能拿public修饰的Constructor<Cat> constructor1 = c.getDeclaredConstructor();//都能拿,<cat>声明一个泛型constructor1.setAccessible(true);//禁止检查访问权限Cat cat = constructor1.newInstance();//完成对象初始化:有声明之后newInstance()的返回值才可以拿cat类去接收,否则得强转System.out.println(cat);//3.获取有参构造器Constructor<Cat> constructor2 = c.getDeclaredConstructor(String.class, int.class);//要写上.class,私有的也可以拿到System.out.println(constructor2.getName()+"----------"+constructor2.getParameterCount());constructor2.setAccessible(true);Cat cat2 = constructor2.newInstance("哈基滨", 3);System.out.println(cat2);}
}

image-20251102201843170

package Basic.src.com.reflect;import org.junit.Test;import java.lang.reflect.Field;public class Test3Field {@Testpublic void testGetFields() throws Exception {//1.反射第一步,必须是得到类的Class对象Class<Cat> c = Cat.class;//2.获取类的全部成员变量Field[] fields = c.getDeclaredFields();//3.遍历这个成员变量for (Field field : fields) {System.out.println(field.getName()+"----------"+field.getType());}//4.定位某个成员变量Field fName = c.getDeclaredField("name");System.out.println(fName.getName()+"----------"+fName.getType());Field fAge = c.getDeclaredField("age");System.out.println(fAge.getName()+"----------"+fAge.getType());//赋值fName.setAccessible(true);fAge.setAccessible(true);Cat cat1 = new Cat();//public Cat()Cat cat2 = new Cat();fName.set(cat1,"咖啡猫");System.out.println(cat1);//取值String name = (String)fName.get(cat2);System.out.println(name);};
}
http://www.gsyq.cn/news/37842.html

相关文章:

  • 第十届中国大学生程序设计竞赛 哈尔滨站(CCPC 2024 Harbin Site)
  • https://heylink.me/tizihacks/
  • 2025CSP-J游记
  • 通达信:引用函数 - Leone
  • 项目架构
  • CSP总结
  • AI泡沫再思考:技术革命与投资狂潮的真相
  • [群表示论]基本概念
  • jenkins安装排错
  • 2025 年 11 月金属件去毛刺机,五金去毛刺机,自动去毛刺机厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 2025 年 11 月回转式风机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • Ubunt 搭建Samba服务
  • 题解:AT_abc036_d [ABC036D] 塗り絵
  • 2025 年 11 月高压锅炉无缝钢管,方形无缝钢管,16Mn 无缝钢管厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • [论文笔记] Machine-Learning-Guided Selectively Unsound Static Analysis
  • 2025 年 11 月精密无缝钢管,合金无缝钢管,厚壁无缝钢管厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 题解:AT_abc166_f [ABC166F] Three Variables Game
  • CCF CSP-S2 2025 游记
  • 【EF Core】“多对多”关系与跳跃导航
  • 2025.11.2博客
  • 为啥slmbuild的cutoff不能设得很大
  • 团队项目1-团队展示选题-图书管理系统
  • 第二天,学习部分快捷键位(重点加粗)
  • windows terminal 配置文件
  • VRP基本配置命令
  • 解码LVGL样式
  • 20231302邱之钊密码系统设计实验二一
  • 2025 年 11 月运动木地板厂家最新推荐,成分精纯与效能升级!—— 产能、专利、环保三维数据透视
  • 2025 年 11 月运动木地板厂家最新推荐,成分焕新与效能强化!—— 精准检测与稳定性能深度解析
  • JavaScript中的闭包:原理、应用与代码