Я пытаюсь протестировать некоторый Java-код, который использует отражение, и как часть теста мне нужно создать объект, который отличается от тестируемого объекта, но имеет общий (абстрактный) родительский (на самом деле, Optional
обертывание объекта). Я тестирую предикат в форме:
abstractForm.isPresent() && (abstractForm.get().getClass() != this.getClass())
(не мой дизайн - не вините меня!) И нужно создать фиктивный объект для abstractForm
. Если я создаю его с помощью Mockito, просто используя SacmElement citedElement = mock(SacmElement.class)
, на самом деле все прекрасно работает , за исключением . Я получаю предупреждение:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.mockito.cglib.core.ReflectUtils$2 (file:/C:/Users/owner/.m2/repository/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.mockito.cglib.core.ReflectUtils$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Так что пока это работает , но вряд ли оно продолжит работать. Это выходит за рамки того, что может сделать Mockito, или есть неослабный способ получить доступ к классу объекта Mockito?