自定义一个测试注解
程序员文章站
2024-02-16 09:27:04
...
自定义@Test注解
1.创建Annotation类型文件,命名Test
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
public String value();
}
2.自定义类,如类A,方法前添加注解
public class A {
@Test("do")
public void f1(){
System.out.println("f1()");
}
public void f2(){
System.out.println("f2()");
}
@Test("info")
public void f3(String info,int age){
System.out.println(info+":"+age);
}
@Test("hello")
public String f4(){
return "hello";
}
}
3,编写测试类AnnotationTest
public class AnnotationTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name=scanner.next();
try {
Class<?> c = Class.forName(name);
Object obj = c.newInstance();
Method[] methods = c.getDeclaredMethods();
for(Method mt:methods){
Test test = mt.getDeclaredAnnotation(Test.class);
String value=null;
if(test!=null){
Class<?>[] types = mt.getParameterTypes();
value = test.value();
Object result;
if(types.length==0){
result = mt.invoke(obj);
System.out.println(result);
}else{
Object[] params=new Object[types.length];
for (int i = 0; i < params.length; i++) {
if(types[i]==String.class){
params[i]="张三";
}else if(types[i]==int.class){
params[i]=18;
}
}
result=mt.invoke(obj, params);
System.out.println(result);
}
}
System.out.println(test+":"+value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
推荐阅读
-
自定义一个测试注解
-
[RoR] Rails unittest一个小bug 博客分类: Ruby RailsMySQLPostgreSQLRuby单元测试
-
MySQL一个索引最多有多少个列?真实的测试例子_MySQL
-
小弟我用织梦的自定义表单做了一个人员录入 现在想在前台实现搜索功能 怎么做
-
Java_注解指导手册_–_终极向导 javahibernatejunitspring单元测试
-
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)(转载) 博客分类: Spring框架 aopspringaspectj
-
使用Spring自定义注解实现任务路由的方法
-
通过Spring AOP实现Spring MVC自定义注解验证器 博客分类: springspring-mvcAOP springspring-mvcAOP
-
贴一个自定义的 symfony 的表单皮肤 应用bootstrap效果
-
thinkPHP生手找不到一个自定义函数