在onTestSuccess / onTestFailure之前调整运行@AfterMethod

时间:2017-08-19 07:20:21

标签: java testng

我想知道是否有某种方法来调整TestNG,以便首先执行@AfterMethod注释的方法,然后在测试侦听器运行中执行onTestSuccess / onTestFailure方法。

在我的项目中,@ AfterMethod注释的方法具有为每个测试方法打印响应主体的逻辑。并且onTestSuccess / onTestFailure方法具有打印消息的逻辑(例如"测试完成")。我不想让代码在我项目中每个测试类的@AfterMethod中打印此消息。

问题是,消息"测试完成"首先显示响应体,然后根据TestNG设计打印响应体,但这是我想要调整的。

2 个答案:

答案 0 :(得分:0)

当前实现首先运行侦听器,然后运行方法之前/之后。

目前,您无法更改侦听器的顺序,并且方法之前/之后不是侦听器。

答案 1 :(得分:0)

如果主要关注点阻止在@AfterMethod末尾添加自定义消息,那么这只是您想要避免的全局重构,我会考虑AOP技术。这是一个 AspectJ 示例:

@Slf4j
@Aspect
public class MessageAspect {

    @After("execution(@org.testng.annotations.AfterMethod * target.package.path..*.*(..))")
    public void print(final JoinPoint joinPoint) {
        log.info("Test completed");
    }
}

在你的情况下使用AOP的主要优点是使用0重构的工作量很小。