Как шпионить за классом, у которого есть Аннотация с Мокито? - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу шпионить за классом, у которого есть пользовательская аннотация, но когда я пытаюсь получить аннотации, он не имеет ничего.

Мой класс определяется как:

@FisaEntity(name="TCRB_AFL_AFFILIATION", applicationId="CRB_AFL_REQ", master=true)
@PrimaryKeyFields(names={"CRB-TCRB_AFL_AFFILIATION-AFFILIATION_ID", "CRB-TCRB_AFL_AFFILIATION-AFFIL_SEQ" })
public class Affiliation{

}

Когда япопробуйте получить аннотации с этим кодом:

FisaEntity entityAnnotation = (FisaEntity)klass.getAnnotation(FisaEntity.class);

И мой тест запустите это:

Affiliation affiliation = spy(new Affiliation());

Отладка моего кода, я вижу, что моя переменная klass:

com.req.model.Affiliation$$EnhancerByMockitoWithCGLIB$$123@123

Кто-нибудь знает какой-нибудь хак?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы сами ответили на свой вопрос:

com.req.model.Affiliation$$EnhancerByMockitoWithCGLIB$$123@123

Просто не делайте предположений в отношении насмешек или шпионов.Используйте их так, как они должны быть: «тестовые заглушки», которые предоставляют вам функциональность (иначе поведение).

Другими словами: вы создаете насмешки, чтобы вы могли контролировать / проверятьвызовы методов, сделанные на этих объектах.Вы как-то внедряете макеты в тестируемый код, чтобы получить эффекты, которые вы намереваетесь вызывать / наблюдать.аннотации и еще много чего в оригинальном классе: просто не очень хороший подход.

Как уже было сказано: вы насмехаетесь над объектами, чтобы управлять их поведением, а не структурным составом соответствующего класса, который должен сгенерировать Mockito для создания экземпляров макетов объектов.

0 голосов
/ 12 декабря 2018
Class clazz = Affiliation.class;
Annotation[] annotations = clazz.getAnnotations();
Annotation annotation = clazz.getAnnotation(Component.class);

Они оба должны дать вам все аннотации класса и конкретную аннотацию класса.

Из вашего вопроса не ясно, что такое klass!

Если целью вашего тестирования является исключительно проверка того, что аннотация существует, то таким образом вы можете получить аннотацию (s) а затем утверждать их ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...