做单元 测试时,输出日志想知道当前 在执行哪个方法,直接用reflect没想到怎么写,在网上搜索了一下,可以这样写,
分享下,看看大家 还有没有 相关别的好方法。
JDK1.4
public class MyTest {
public static void main(String args[]) {
new MyTest().doit();
}
public void doit() {
System.out.println
(new Exception().getStackTrace()[0].getMethodName());
}
}
JDK1.5, a new technique is available.
public class Test {
public static void main(String args[]) {
trace(Thread.currentThread().getStackTrace());
new Test().doit();
trace(Thread.currentThread().getStackTrace());
}
public void doit() {
trace(Thread.currentThread().getStackTrace());
doitagain();
}
public void doitagain() {
trace(Thread.currentThread().getStackTrace());
}
public static void trace(StackTraceElement e[]) {
boolean doNext = false;
for (StackTraceElement s : e) {
if (doNext) {
System.out.println(s.getMethodName());
return;
}
doNext = s.getMethodName().equals("getStackTrace");
}
}
}
main doit doitagain main
参考: http://www.rgagnon.com/javadetails/java-0420.html
本文介绍了两种在Java中获取当前执行方法名称的方法。一种适用于JDK1.4,通过抛出异常并获取堆栈跟踪的方式实现;另一种适用于JDK1.5及以上版本,采用线程堆栈跟踪的方法。这两种方法均可帮助开发者在单元测试中轻松记录方法的执行情况。
6253

被折叠的 条评论
为什么被折叠?



