最近,我開始對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()我以其他方式做...非常感謝。 –