我有一个类的方法有annotation(io.qase.api.annotation.Step(
Class myStepsClass() {
@Step
fun stepOne() {***}
@Step
fun stepTwo() {***}
}
我想打印";步骤";方法名称,并显示实现步骤方法的类名:在本例中,这是myStepsClass。
我创建了方面文件
@Aspect
class Aspects {
@Before("@annotation(io.qase.api.annotation.Step)")
fun stepMethod(joinPoint: JoinPoint) {
println("Step called: ${getMethodName(joinPoint)}")
}
private fun getMethodName(joinPoint: JoinPoint): String {
val methodSignature = joinPoint.signature as MethodSignature
return methodSignature.name
}
}
它打印调用的步骤:stepOne当我调用步骤";stepOne";其他方法中的方法(如测试方法(。如何获取父类名称-myStepsClass?
打印类似的内容
调用的步骤:myStepsClass->步骤一
调用的步骤:myStepsClass->步骤二
我创建了一个项目,代码为:https://github.com/heavy-razzer/AssertJ-Maven-Kotlin
(joinPoint.signature as MethodSignature).declaringTypeName
将发挥作用。它将返回该方法的完整路径,由"分割"象征
所以你可以有
private fun getParentClassName(joinPoint: JoinPoint): String {
return (joinPoint.signature as MethodSignature).declaringTypeName.split(".").last()
}
以获取类的名称,其中描述了该方法。
我已经用这个例子更新了我的GH回购。
输出为:
Test started: Very simple test
Steps->printCaption(): []
Step: This this a simple test
Test step performed: printCaption
Steps->printMessage(): []
Step: Testing in progress
Test step performed: printMessage