当前位置: 首页 > 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.jsqmd.com/news/29340/

相关文章:

  • k8s-Pod中的网络通信(3)
  • 一个灵感:思维的断章
  • 第十届中国大学生程序设计竞赛 哈尔滨站(CCPC 2024 Harbin Site)
  • CSP-S 回顾
  • https://heylink.me/tizihacks/
  • 2025CSP-J游记
  • 通达信:引用函数 - Leone
  • 20231427田泽航第七周预习报告
  • CSP总结
  • AI泡沫再思考:技术革命与投资狂潮的真相
  • [群表示论]基本概念
  • P14362 [CSP-S 2025] 道路修复
  • 10.30总结
  • 基于 Maxwell 实现 MySQL 数据实时迁移到 Mongodb
  • CSP2025-S 坠机记
  • jenkins安装排错
  • 一、RK3562板卡上手
  • 【题解】CCPC 2024 Jinan Site [J] Temperance
  • 2025 年 11 月金属件去毛刺机,五金去毛刺机,自动去毛刺机厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 原来求凸包这么简单
  • 2025 年 11 月全自动激光去毛刺机,金属件去毛刺机,自动去毛刺机厂家最新推荐,精准检测与稳定性能深度解析!
  • 2025 年 11 月数控激光去毛刺机,冲压件去毛刺机,精密去毛刺机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • AT ARC156C Tree and LCS 题解
  • 2025 年 11 月回转式风机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CSPT漏洞浅析
  • 【题解】CCPC 2024 Jinan Site [F] The Hermit
  • Ubunt 搭建Samba服务
  • 2025 年 11 月精密无缝钢管,镀锌无缝钢管,定制无缝钢管厂家最新推荐,产能、专利、环保三维数据透视!
  • 2025 年 11 月合金无缝钢管,大口径无缝钢管,厚壁无缝钢管厂家最新推荐,技术实力与市场口碑深度解析!
  • 题解:AT_abc131_e [ABC131E] Friendships