У меня есть аннотация,
@Retention(RetentionPolicy.RUNTIME)
@Target(value={ElementType.METHOD, ElementType.TYPE})
public @interface JobLoggable {
JobType jobType();
JobDomain domain();
JobStatus jobInitialStatus();
}
, которую я применяю к своему классу
@JobLoggable
public class Process {
public void doSomething() {
Annotation[] annotations = this.getClass().getAnnotations();
Assert.assert(annotations.length == 1);
}
}
В моем тесте я шпионю за ним (не издевайтесь над ним, хотя он не должен вещество):
public class Test {
@Test
public void test() {
Process process = Mockito.spy(Process.class);
//spy on some internal methods, capture their return values
process.doSomething();
}
}
К сожалению, this.getClass (). getAnnotations () не возвращает аннотаций. Когда я смотрю, к какому классу относится экземпляр, это: Process $$ EnhancerByMockitoWithCGLIB $$ 3db5579b
Это не настоящий класс Process. Я полагаю, именно поэтому не удается получить аннотации.
Возможно, в этом есть какая-то хитрость. Любые идеи? Спасибо, ребята.
Я уже пытался смоделировать getClass () на экземпляре процесса, но он является окончательным, поэтому его нельзя сменить.