如何使用Spring AOP编写测井记录测试?

时间:2019-07-05 11:02:51

标签: java logging slf4j spring-aop

我搜索了但我找不到并理解我如何为我的代码编写测试

AOP

    @Slf4j
    @Aspect
    @Component
    public class SpringAopLogging {

    @Pointcut("execution(public* *(..)) && @within(com.muaz.aop.Logger)")
    public void isAnnotated() {}

    @Before("isAnnotated()")
    public void before(JoinPoint point) {
            log.info(" parameters : {} ", point.getArgs());
    }

    @AfterReturning(pointcut = "isAnnotated()", returning = "retVal")
    public void after(JoinPoint point, Object retVal) {
        log.info("retVal is : {}", retVal);
    }
}

注释

@Target({ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Logger {
}

服务

@Service
@Logger
public class StudentService {

public Student updateStudentName(Student student, String name){
  student.setName(name);
  return student;
     }
}

我想测试@Before和@AfterReturning是否可以在方法执行时与@Logger一起使用

1 个答案:

答案 0 :(得分:0)

我认为您需要在这里进行集成测试,以测试AOP配置的效果。 您无需测试AOP配置,因为您在其中仅需一行代码就毫无意义。

相反,您需要测试在注入parameters : {new Student(),"john"}并调用例如StudentService时是否记录了以下行updateStudentName(new Student(), "john")