- 黑盒测试:功能测试;白盒测试:代码测试。单元测试就是一种白盒测试,一般都会使用JUnit4工具
- junit4.x基于Java5开始的版本,支持注解.方法是public修饰的,没有参数,无返回的。安装插件
-
@Before @After @BeforeClass标签:在所有的Before方法之前执行,只在最初执行一次. 只能修饰静态方法
@AfterClass标签:在所有的After方法之后执行,只在最后执行一次. 只能修饰静态方法; 执行顺序: BeforeClass->(Before->Test-After多个测试方法)-->AfterClass -
buildpath-->AddLibaray-->JUnit-->JUnit4
-
Lombok是一款小巧的代码生成工具。buildpath-->AddLibaray-->use Library-->new -->add External JAR or 导包-->buildpath
-
内省:BeanInfo info=Introspector.getBeanInfo(Class<?> beanClass, Class<?> stopClass);
PropertyDescriptor[] pros=info.getPropertyDescriptors() -
所有的Annotation接口都是java.lang.annotation.Annotation 接口的子接口,
@interface Override {}
所有的枚举类,都是 java.lang.Enum 类的子类.
enum Gender{}
注解被用来为程序元素(类,构造器、方法,成员变量等)设置元数据。 -
元注解:在定义注解的时候用来贴在注解上的注解,用来限定注解的用法
@Retention、@Target、@Documented、@Inherited
@Retention:决定注解可以保存到哪个时期
注解的有效期有3个都封装在枚举:RetentionPolicy中
RetentionPolicy.SOURCE: 表示注解只存在于源文件中,不会被编译到字节码中
RetentionPolicy.CLASS: 表示注解会被编译到字节码中,但是JVM不加载注解
RetentionPolicy.RUNTIME: 表示注解会被编译到字节中,会随着字节码的加载而进入JVM,因此可以反射性地读取
开发的注解的有效期使用RUNTIME,这样才能在程序运行时使用反射赋予注解功能
默认是RetentionPolicy.CLASS -
@Target:决定了该注解可以贴在什么地方
都封装在枚举:ElementType中
ElementType.ANNOTATION_TYPE 贴在注解上
ElementType.CONSTRUCTOR 贴在构造方法上
ElementType.FIELD 贴在字段上(包括枚举常量)
ElementType.LOCAL_VARIABLE 贴在局部变量上
ElementType.METHOD 贴在方法上
ElementType.PARAMETER 贴在参数上
ElementType.TYPE 贴在类、接口或枚举上
不指定时,可以贴任意地方 -
定义注解的语法:
public @interface VIP {
//抽象方法/属性
}
注解的抽象方法称为属性,属性默认值使用:default 值;注解里只有属性
使用注解语法:@注解名[(属性名=属性值,属性名=属性值)]
例如:@VIP
只有1个属性且是value时,value可省略
属性的返回值类型只能是基本类型/枚举/Class/注解/String/枚举以及他们各自的一维数组 -
Annotation[] getAnnotations() 获取目标对象上所有的注解
<A extends Annotation> A getAnnotation(Class<A> annotationClass) 获取目标对象上的注解,没有则返回null
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 判断对象上是否有某种类型的注解 ,参数:注解的类型 -
HTML: 显示数据到页面, 预定义标签
XML: 传输数据,少量数据存储。而非显示数据
XML标签没有被预定义,需要用户自行定义标签。
声明XML文档:<?xml version="1.0" encoding="UTF-8"?>
<![CDATA[数据内容]]>:把标签当做普通文本内容,不解析
在XML中文本(包括回车换行,空格等看不见的字符)也是节点
java代码中所做的操作,操作的是内存中的Document对象,和磁盘中的XML文件没有关系.
File f = new File(“d://contact.xml”);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(f);或者无f 时:newDocument (); -
node接口:
String getTextContent() : 获取当前元素下的文本内容
void setTextContent(String textContent) : 设置当前元素下文本内容
Node appendChild(Node newChild) : 将指定元素添加到当前元素下面,做子元素
Node removeChild(Node oldChild): 删除当前元素指定子元素,
Node getParentNode() : 获取当前节点的父亲节点
注意: 只能通过父元素来删除子元素document接口:
Element document.getDocumentElement(); 获取根元素
NodeList document.getElementsByTagName(String tagName):
获取整个xml文档中所有指定tagName的元素, 返回值是Node集合
document.getElementById(String id) : 通过指定id获取元素
Element createElement(String tagName) : 创建指定名称的元素element接口:
NodeList getElementsByTagName(String tagName);
获取当前元素下指定标签名的子元素, 返回的是Node集合
void setAttribute(String name, String value) :
给当前元素设置一个属性, name 属性名字, value是属性的值
romveAttribute(String name); // 删除当前元素下指定名称的 属性
Node getParentNode(); 获取 当前元素的父元素同步操作:
//创建同步转换器的工程对象
TransformerFactory transformerFactory = TransformerFactory.newInstance();
//创建同步转换器对象
Transformer transformer = transformerFactory.newTransformer();
//源:内存中document对象: dom树
Source xmlSource = new DOMSource(document);
//目标:磁盘中xml文件
Result outputTarget = new StreamResult(f);
//同步转换
transformer.transform(xmlSource, outputTarget); -
DOM4J
基础加强
最新推荐文章于 2024-05-08 22:53:36 发布