我们知道,通过method.getName能获取到当前运行的方法名,如果想获取到当前运行的类名呢,查看Method源码
可以看到源码中定义了一个clazz,可以通过clazz获取类名,虽然是私有的,但对外提供了访问的公有方法。
Method(Class<?> declaringClass,
String name,
Class<?>[] parameterTypes,
Class<?> returnType,
Class<?>[] checkedExceptions,
int modifiers,
int slot,
String signature,
byte[] annotations,
byte[] parameterAnnotations,
byte[] annotationDefault) {
this.clazz = declaringClass;
this.name = name;
this.parameterTypes = parameterTypes;
this.returnType = returnType;
this.exceptionTypes = checkedExceptions;
this.modifiers = modifiers;
this.slot = slot;
this.signature = signature;
this.annotations = annotations;
this.parameterAnnotations = parameterAnnotations;
this.annotationDefault = annotationDefault;
}
//可以通过如下方法获取到clazz
/**
* {@inheritDoc}
*/
@Override
public Class<?> getDeclaringClass() {
return clazz;
}
用法如下
@AfterMethod
public void getAnnation(Method method){
//获取当前运行的方法名
System.out.println(method.getName());
//获取当前运行的类名
System.out.println(method.getDeclaringClass().getName());
}