我已经定义了一个Aspect,当方法被注解时将使用它。请看下面的示例代码
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PredefinedCheck {
}
@Aspect
@Component
public class PredefinedAspect {
@Before("@annotation(PredefinedCheck)")
@SneakyThrows
public void check(JoinPoint joinPoint) {
......
log.debug("hello!!");
}
}
@Service
public class ActionService {
@PredefinedCheck
public MyEntity updateMyEntity(AuthenticationJwtToken authToken, EntityUpdateRequest request) {
......
}
}
现在,问题是如何对我的PredefinedAspect代码进行单元测试?我以为单元测试updateMyEntity
方法会触发它,但它没有(我调试过,它没有达到断点)。此外,sonarqube不显示所覆盖的代码)。请指示。
1条答案
按热度按时间hsvhsicv1#
步骤
1.在src/test/ root项目下创建SpringBootApplication类,它将启动上下文(加载/注册AOP)以进行测试。
1.使用SprintBootTest注解启用测试,并在上面的Application上下文中使用。
1.如果您的项目启用了某些配置,例如Hibernate / Database,而您不感兴趣测试它,请使用EnableAutoConfiguration注解排除。例如:
完整示例:
您可以使用外部ActionService类,但是不要忘记将其添加到Application Context基类列表中。