做单元 测试时,输出日志想知道当前 在执行哪个方法,直接用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