浅谈java运用注解实现对类中的方法检测的工具

时间:2021-05-19

创建自定义注解

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Test {}

建立测试类

public class UserTest { @Test public void testInsert() { User user = null; System.out.println(user.getUsername()); } @Test public void testQuery() { Blog b = new Blog(); b.setTips(new String[] {"技术","java","多线程"}); String[] tips = b.getTips(); System.out.println(tips[3]); } @Test public void divide() { System.out.println(10/0); } }

编写工具类

public static void main(String[] args) { BufferedWriter bw = null; try { //记录方法总数 int methodCount = 0; //记录错误方法总数 int expCount = 0; //准备一个文件输出流,用于记录程序执行过程中的异常信息 bw = new BufferedWriter(new FileWriter("log.txt")); // 获取类的Class对象 Class clz = UserTest.class; //创建目标类型的实例对象 Object obj = clz.newInstance(); //获取所有的方法对象 Method[] methods = clz.getMethods(); for (Method m : methods) { if(m.isAnnotationPresent(Test.class)) { //统计总共有多少方法需要被测试 methodCount++; } } bw.write("测试方法总数:" + methodCount); bw.newLine(); bw.write("================================"); bw.newLine(); for (Method m : methods) { try { //如果方法上面包含了Test注解则作为测试方法进行测试 if(m.isAnnotationPresent(Test.class)) { m.invoke(obj); } } catch (Exception e) { //异常方法计数器递增 expCount++; bw.write(m.getName() + "出现异常"); bw.newLine(); bw.write("类型:" + e.getCause().getClass()); bw.newLine(); bw.write("原因:" + e.getCause().getMessage()); bw.newLine(); bw.write("================================"); bw.newLine(); } } bw.write("错误方法总数:" + expCount); bw.newLine(); } catch (Exception e) { e.printStackTrace(); }finally { try { if(bw != null) { bw.flush(); bw.close(); } } catch (IOException e) { e.printStackTrace(); } } }

到此这篇关于浅谈java运用注解实现对类中的方法检测的工具的文章就介绍到这了,更多相关java运用注解实现对类中的方法检测的工具内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章