Я недавно начал работать над TDD для exisitng проекта и столкнулся несколько вопросов, один из тех, кто упомянут нижеMocking/гася частные переменные класса без получения и установки методов
У меня есть собственная переменная поругаем в тестовый класс и переменная выглядит, как показано ниже
private Class<XYZ> cls = XYZ.class;
позже эта переменная «ЦБС» используется как arugment для одного метода, как Classname
private List create(Class className, Object objectTO, List<String> names)
I знаю, частные переменные могут быть издевались и я издевался приватную переменную в тестовом случае, выполнив приведенные ниже пункты
- Заявленный
java.lang.reflect.Field;
Field field = PowerMockito.field(XYZ.class,"cls");
field.set(XYZ.class, "objectOfXYZClass");
Когда я запускаю мой тестовый класс , я становлюсь ниже ошибки
java.lang.IllegalArgumentException: Can not set java.lang.Class field com.tools.XYZ.cls to java.lang.Class
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
at java.lang.reflect.Field.set(Field.java:680)
Пожалуйста, кто-нибудь может помочь мне в этом и сообщить мне, чего я не вижу.
PS: Я использовал @preparefortest
и отметил все необходимые классы в том, что и работает мой тестовый класс с помощью @runwith(powermockrunner.class)
@ Sarseth..yes, который работал на меня .. очень плохо, подал .set(), я делал по-другому ... большое спасибо. –