最近,我开始对TDD工作exisitng项目面临几个问题,其中之一是下面嘲讽/磕碰类的私有变量,而getter和setter方法
我有一个私有变量在被嘲笑提及测试类和可变看起来像下面
private Class<XYZ> cls = XYZ.class;
后面这种“CLS”变量被用作arugment对于该方法中的一个作为的className
private List create(Class className, Object objectTO, List<String> names)
我知道私有变量可以被嘲笑和 我嘲笑了私有变量在我的测试情况下,通过下面的下面的步骤
- 宣布为
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 that was working for me..my bad,filed .set()我以其他方式做...非常感谢。 –