Как убедиться, что аннотация @Scheduled присутствует в методе - PullRequest
1 голос
/ 22 мая 2019

В нашем приложении Spring Boot у нас есть метод с аннотацией @Scheduled:

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

На этапе тестирования maven-сборки мы хотим убедиться, что:

  1. аннотация есть (например, не была удалена разработчиком по ошибке), а
  2. содержит эти точные значения

Есть ли способ как-то проверить это в модульных / интеграционных тестах?или другим способом на этапе сборки?

Нам не нужно тестировать сам планировщик Spring, просто чтобы убедиться, что аннотация там.

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Вы можете проверить наличие аннотации на объекте Class, используя .getAnnotation(Class<A> annotationType) метод Class, где A - это параметр общего типа, как обычно T .

Пример использования:

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

После того, как вы получите аннотацию, вы можете получить доступ к полям, используя предоставленные аннотацией методы, как и в обычном классе:

scheduledAnnotation.fixedDelay();
0 голосов
/ 22 мая 2019

Полагаю, таким образом вы можете легко получить это, используя отражение

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 Как получить значение аннотации с использованием Reflection в Java

...