沈阳网站搭建,抖音小程序怎么挂到抖音上,新网站建设脑图,前十名少儿编程机构文章目录 一#xff1a;Junit单元测试测试分类#xff1a;Junit的使用Before_After 二#xff1a;注解什么是注解文档相关的注解IDEA中的javadoc使用#xff1a;JDK内置的3个注解自定义注解 元注解RetentionTargetRepeatableDocumented#xff08;用的很少#xff09;Inh… 文章目录 一Junit单元测试测试分类Junit的使用Before_After 二注解什么是注解文档相关的注解IDEA中的javadoc使用JDK内置的3个注解自定义注解 元注解RetentionTargetRepeatableDocumented用的很少Inherited用的极少 三枚举enum关键字定义枚举类Enum类的常用方法枚举类实现接口枚举的应用 一Junit单元测试
测试分类
1黑盒测试 软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试。 2白盒测试—》Junit属于白盒测试。 软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试。
Junit的使用
1.一般测试和业务做一个分离分离为不同的包 2.测试类的名字****Test —见名知意 3.测试方法的定义–》这个方法可以独立运行不依托于main方法 4.测试方法定义完以后不能直接就独立运行了必须要在方法前加入一个注解 Test 5.导入Junit的依赖的环境 代码可能程序上没异常但逻辑上有问题判定结果依旧为绿色但不代表测试通过所以我们要加入断言: Assert.assertEquals() 第一个参数预测结果第二个参数实际结果 测试类代码
public class Calclatortest {Calculator calnew Calculator();Testpublic void Testadd(){int resultcal.add(1,4);//加入断言预测一下结果判断一下我预测的结果和 实际的结果是否一致Assert.assertEquals(5,result);}Testpublic void Testsub(){int anscal.sub(5,1);Assert.assertEquals(4,ans);}
}Before_After
Before: 某一个方法中加入了Before注解以后那么这个方法中的功能会在测试方法执行前先执行 一般会在Beforer修饰的那个方法中加入一些申请资源的代码申请数据库资源申请IO资源申请网络资源
After: 某一个方法中加入了After注解以后那么这个方法中的功能会在测试方法执行后先执行 一般会在After修饰的那个方法中加入释放资源的代码释放数据库资源释放IO资源释放网络资源 用法 Beforepublic void init(){System.out.println(开始测试);}Afterpublic void close(){System.out.println(结束测试);}二注解
什么是注解
1.在编译,类加载,运行时被读取,并执行相应的处理。通过使用注解,程序员可以在不改变原有逻辑的情况下在源文件中嵌入一些补充信息。 2.一定程度上可以说 框架注解反射设计模式
文档相关的注解 param return和exception这三个标记都是只用于方法的。 param的格式要求: param 形参名 形参类型 形参说明 return的格式要求: return 返回值类型返回值说明如果方法的返回值类型是void就不能写 exception的格式要求: exception 异常类型异常说明 param和exception可以并列多个
IDEA中的javadoc使用 在画圈处输入上述文字可以防止乱码
JDK内置的3个注解
1.Override:限定重写父类方法该注解只能用于方法 作用限定重写的方法只要重写方法有问题就有错误提示。 2.Deprecated:用于表示所修饰的元素(类,方法构造器属性等)已过时。通常是因为所修饰的结构危险或存在更好的选择 在方法前加入Deprecated这个方法就会变成一个过时方法 3.SuppressWarnings:抑制编译器警告 作用若编译器警告这一代码可以加入SuppressWarnings使其不触发警告
自定义注解
1.创建java注解 interface跟接口没有一点关系 2.注解的内部 以SuppressWarnings为例发现内部 实际上 value()是属性不是方法 String[]是无参数方法成员变量的类型 无参数方法的类型基本数据类型八种String枚举注解类型还可以是以上类型对应的数组 参数叫做配置参数 3.使用注解 如果定义了配置参数那么使用时必须给配置参数赋值 如果在定义配置参数时已经给其赋值了那么使用的时候无需传值 赋值操作 内部没有定义配置参数的注解可以叫做标记 内部定义了配置参数的注解叫做元数据
元注解
元注解是用于修饰其它注解的注解
Retention
作用指定 修饰的那个注解的生命周期 Rentention包含一个RetentionPolicy枚举类型的成员变量,使用Rentention时必须为该value成员变量指定值: 1RetentionPolicy.SOURCE:在源文件中有效 2RetentionPolicy.CLASS:在class文件中有效保留在.class文件中但是当运行Java程序时他就不会继续加载了不会保留在内存中JVM不会保留注解 3RetentionPolicy.CLASS:在class文件中有效(即class保留)保留在.class文件中但是当运行Java程序时他就不会继续加载了不会保留在内存中JVM不会保留注解 如果注解没有加Retention元注解那么相当于默认的注解是.CLASS的状态
Target
作用被修饰的注解能用于修饰哪些程序元素
Target也包含一个名为value的成员变量 给配置参数赋值 1.TYPE代表可以修饰类 2.METHOD代表可以修饰方法 3.更多的可以去Target的源码里面找 annotation
Target({TYPE, METHOD})
public interface annotation {
}我们给配置参数复制了TYPE和METHOD使annotation注解只可以修饰类和方法但属性和构造器不可修饰 注意 记得导包
Repeatable
作用被该元注解修饰的注解 可以重复的修饰同一个位置
Documented用的很少
作用被该元注解修饰的注解类将被javadoc工具提取成文档。默认情况下javadoc不包括注解
Inherited用的极少
作用如果某个类使用了被 Inherited修饰的注解则其子类将自动具有该注解
三枚举
enum关键字定义枚举类
public enum Season {//必须将对象放在最开始的位置SPRING(春天,春暖花开),SUMMER(夏天,烈日炎炎),AUTUMN(秋天,硕果累累),WINTER(冬天,冰天雪地);private final String SeasonName;//季节名称private final String SeasonDesc;//季节描述//构造器私有化外界不能调用这个构造器只能Season内部自己调用private Season(String SeasonName,String SeasonDesc){this.SeasonNameSeasonName;this.SeasonDescSeasonDesc;}public String getSeasonDesc() {return SeasonDesc;}public String getSeasonName() {return SeasonName;}Overridepublic String toString() {return Season{ SeasonName SeasonName \ , SeasonDesc SeasonDesc \ };}
}测试类
public class Test1 {public static void main(String[] args) {Season winter Season.WINTER;System.out.println(winter);}
}SPRING(“春天”,“春暖花开”), SUMMER(“夏天”,“烈日炎炎”), AUTUMN(“秋天”,“硕果累累”), WINTER(“冬天”,“冰天雪地”); 这样写省略了public static final Season SPRING new Season(“春天”,“春暖花开”);
我们可以看到 Season类中重写了toString方法所以我们输出的结果是 现在我们将Season类中的同String方法去掉 依旧运行Test类输出的结果是 因为enum的上层父类不是Object而是java.lang.Enum
Enum类的常用方法
1.toString()获取对象的名字 2.values 返回枚举类对象的数组 3.valueOf通过对象名字获取这个枚举对象
枚举类实现接口
接口
public interface ii {void show();
}Season类
public enum Season implements ii{SPRING,SUMMER,AUTUMN,WINTER;Overridepublic void show() {System.out.println(这是春天);}
}Test类
public class Test {public static void main(String[] args) {Season spring Season.SPRING;spring.show();Season winter Season.WINTER;winter.show();}
}输出结果
我们发现上面 所有的枚举对象调用这个show方法的时候走的都是同一个方法结果都一样 我们想要不同的对象调用的show方法不同 改进后的Season类
public enum Season implements ii{SPRING{public void show() {System.out.println(这是春天);}},SUMMER {public void show() {System.out.println(这是夏天);}},AUTUMN {public void show() {System.out.println(这是春秋天);}},WINTER {public void show() {System.out.println(这是冬天);}};
}这样子就可以达到我们的目的
枚举的应用
1.可以在入口处对参数进行限制 例如性别只有“男”和“女”种所以我们可以使用enum来对设置性别的参数进行限制 Person类
public class Person {private Gender sex;public Gender getSex() {return sex;}public void setSex(Gender sex) {this.sex sex;}
}Gender类
public enum Gender {男,女;
}Test类 我们发现只要set方法传入的不是“男”或”女“就会报错