我想知道是否有某种方法来调整TestNG,以便首先执行@AfterMethod注释的方法,然后在测试侦听器运行中执行onTestSuccess / onTestFailure方法。
在我的项目中,@ AfterMethod注释的方法具有为每个测试方法打印响应主体的逻辑。并且onTestSuccess / onTestFailure方法具有打印消息的逻辑(例如"测试完成")。我不想让代码在我项目中每个测试类的@AfterMethod中打印此消息。
问题是,消息"测试完成"首先显示响应体,然后根据TestNG设计打印响应体,但这是我想要调整的。
答案 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重构的工作量很小。