如何确保方法中存在@Scheduled批注

时间:2019-05-22 07:16:14

标签: java unit-testing spring-boot integration-testing scheduler

在我们的Spring Boot应用程序中,我们有一个带有@Scheduled批注的方法:

@Scheduled(fixedRate = 1000L * 60 * 10, initialDelay = 1000L * 60 * 5)
   public void doSomethingFromTimeToTime(){....}

在我们的Maven构建测试阶段,我们希望确保:

  1. 注释在那里(例如未被开发人员误删除)和
  2. 包含这些确切值

有没有办法在单元/集成测试中对此进行测试?还是在构建阶段用另一种方式?

我们不需要测试Spring的Scheduler本身,只需确保注释在那里。

2 个答案:

答案 0 :(得分:2)

您可以使用Class的{​​{3}}方法测试在Class对象上是否存在注释,其中A是通用类型参数,就像{{1 }}通常是这样。

用法示例:

T

有了注释后,就可以像使用普通类一样使用注释提供的方法访问字段:

Scheduled scheduledAnnotation = MySpringScheduler.class.getAnnotation(Scheduled.class).

答案 1 :(得分:0)

我想您可以通过反射轻松获得它

Class<?> cls = Class.forName(name);

    cls.getDeclaredAnnotations(); // get all annotation
    (cls.getDeclaredMethods()[0]).getAnnotations(); //get annotation of a method
    Annotation ety = cls.getAnnotation(Annotation.class); // get annotation of particular annotation class

ref How to get the value of annotation using Reflection in Java