скажем, у меня есть аннотация, подобная этой:
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoConvert {
boolean enabled() default true;
}
и класс, помеченный им:
@AutoConvert
public class ExampleCommandToExample extends BaseConverter{}
На суперклассе я делаю следующее:
public void convert(){
Annotation annotation = (AutoConvert) this.getClass().getAnnotation(AutoConvert.class);
}
Все отлично работает во время выполнения!Аннотация найдена и правильно установлена!
Но!При модульном тестировании метода convert с помощью JUnit: this.getClass (). GetAnnotation (AutoConvert.class) всегда возвращает ноль.
Тест выглядит следующим образом:
@Test
public void convertTest(){
//when
exampleCommandToExample.convert();
}
Не отображаются ли пользовательские аннотации отражением при выполнении модульных тестов?У кого-нибудь есть ответ для меня?Я был бы очень признателен за это.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Хорошо, похоже, что это основано на такой инициации ... Я делаю следующее:
exampleCommandToExample = new ExampleCommandToExample() {
@Override
public Type overideSomeMethod() {
return type;
}
};
Может ли экземпляр потерять все свои аннотации, если я переопределю некоторые методы при создании экземпляра?