는 최근 프로젝트를 대한 기존위한 TDD 작업을 시작하고 문제의 커플, 그 중 하나는 내가 개인 변수에 조롱 할 필요가비웃음/getter와 setter 메소드가없는 클래스의 private 변수를 스텁
아래에 언급 직면
private Class<XYZ> cls = XYZ.class;
보다 나중에 "CLS"변수
private List create(Class className, Object objectTO, List<String> names)
I 클래스 명
같은 방법의 하나로서 사용 arugment 같은 테스트 클래스 가변 보인다 개인 변수를 조롱 할 수 있습니다 알고 내가 아래에 따라 내 테스트 케이스에 개인 변수를 조롱은 선언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 나를 위해 일했다... 나쁘다, filed .set() 나는 다른 방법으로하고 있었다. .. 고마워. –