Junit单元测试
package com.yuzhenc.note;
import org.junit.Assert;
import org.junit.Test;
public class Test01 {
@Test
public void testAdd(){
System.out.println("测试add方法");
int result = add(10,20);
System.out.println(result);
Assert.assertEquals(20,result);
}
public static int add(int a, int b) {
return a+b;
}
}
@Before和@After
- @Before : 在测试方法执行前先执行
- @After : 在测试方法执行后先执行
package com.yuzhenc.note;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class Test02 {
@Before
public void init(){
System.out.println("方法执行开始了。。。");
}
@After
public void close(){
System.out.println("方法执行结束了。。。");
}
@Test
public void testAdd(){
System.out.println("测试add方法");
int result = add(10,20);
System.out.println(result);
Assert.assertEquals(20,result);
}
public static int add(int a, int b) {
return a+b;
}
}
文档相关注解
JDK内置的3个注解
- @Override : 限定重写父类方法,该注解只能用于方法
- @Deprecated : 用于表示所修饰的元素(类,方法,构造器,属性等)已过时,通常是因为所修饰的结构危险或存在更好的选择
- @SuppressWarnings : 抑制编译器警告
自定义注解
package com.yuzhenc.note;
@MyAnnotation(value = {"abc","def","ghi"})
public class Test03 {}
@MyAnnotation({"abc","def","ghi"})
class Test04 {}
@MyAnnotation1
class Test05 {}
@MyAnnotation2
class Test06 {}
@interface MyAnnotation {
String[] value();
}
@interface MyAnnotation1 {
String[] value() default "abc";
}
@interface MyAnnotation2 {}
元注解
- @Retention : 用于修饰注解,用于指定修饰的那个注解的生命周期,@Rentention包含一个RetentionPolicy枚举类型的成员变量,使用@Rentention时必须为该value成员变量指定值
- RetentionPolicy.SOURCE : 在源文件中有效(即源文件保留),编译器直接丢弃这种策略的注释,在.class文件中不会保留注解信息
- RetentionPolicy.CLASS : 在class文件中有效(即class保留),保留在.class文件中,但是当运行Java程序时,他就不会继续加载了,不会保留在内存中,JVM不会保留注解。如果注解没有加Retention元注解,那么相当于默认的注解就是这种状态
- RetentionPolicy.RUNTIME : 在运行时有效(即运行时保留),当运行 Java程序时,JVM会保留注释,加载在内存中了,那么程序可以通过反射获取该注释
- @Target : 用于修饰注解的注解,用于指定被修饰的注解能用于修饰哪些程序元素
- 例如:@Target({TYPE,CONSTRUCTOR,METHOD})
- @Documented : 用于指定被该元注解修饰的注解类将被javadoc工具提取成文档,默认情况下,javadoc是 不包括注解的,但是加上了这个注解生成的文档中就会带着注解了
- @Inherited : 被它修饰的Annotation将具有继承性,如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解