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

所属分类: 软件编程 / java 阅读数: 61
收藏 0 赞 0 分享

创建自定义注解

@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运用注解实现对类中的方法检测的工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

更多精彩内容其他人还在看

SpringBoot中使用Ehcache的详细教程

EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。这篇文章主要介绍了SpringBoot中使用Ehcache的相关知识,需要的朋友可以参考下
收藏 0 赞 0 分享

在idea 中添加和删除模块Module操作

这篇文章主要介绍了在idea 中添加和删除模块Module操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

java spring整合junit操作(有详细的分析过程)

这篇文章主要介绍了java spring整合junit操作(有详细的分析过程),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解JAVA 弱引用

这篇文章主要介绍了 JAVA 弱引用的相关资料,帮助大家更好的理解和学习java引用对象,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

深入了解JAVA 虚引用

这篇文章主要介绍了JAVA 虚引用的相关资料,帮助大家更好的理解和学习JAVA,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

详解JAVA 强引用

这篇文章主要介绍了JAVA 强引用的相关资料,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

java中的按位与(&)用法说明

这篇文章主要介绍了java中的按位与(&)用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

深入了解JAVA 软引用

这篇文章主要介绍了JAVA 软引用的相关资料,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

利用MyBatis实现条件查询的方法汇总

这篇文章主要给大家介绍了关于利用MyBatis实现条件查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Intellij IDEA 与maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound

这篇文章主要介绍了Intellij IDEA 与maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.Pa
收藏 0 赞 0 分享
查看更多