반응형
테스트를 실행할 수있는 메소드 또는 함수에 대한 액세스 수정자를 변경하는 것이 나쁘다.
해결 방법
업데이트 :
@Jailbreak Foo foo = new Foo(); // Direct, *type-safe* access to *all* foo's members foo.privateMethod(x, y, z); foo.privateField = value;
이렇게하면 코드가 유형 안전하고 읽을 수 있습니다.디자인이 손상되지 않고 테스트를 위해 과다 노출 방법과 필드가 없습니다.
내부적으로 우리는 헬퍼를 사용하여 <코드> 개인 및 private static
변수를 가져오고 private
및 private static 코드를 호출 할뿐만 아니라
private static
변수를 사용하고 있습니다.> 방법.다음 패턴을 사용하면 개인 메소드 및 필드와 관련된 모든 것을 할 수 있습니다.물론 반사를 통해 private static final
변수를 변경할 수 없습니다.
Method method = TargetClass.getDeclaredMethod(methodName, argClasses);
method.setAccessible(true);
return method.invoke(targetObject, argObjects);
필드의 경우 :
Field field = TargetClass.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, value);
노트 :
1.TargetClass.getDeclaredMethod(methodName, argClasses)
lets you look intoprivate
methods. The same thing applies forgetDeclaredField
.
2.setaCcessible (true)
는 개인과 함께 주위를 재생해야합니다.
참조 페이지 https://stackoverflow.com/questions/34571
반응형
'자바' 카테고리의 다른 글
일반 유형의 클래스 인스턴스를 어떻게 얻을 수 있습니까? (0) | 2021.04.14 |
---|---|
Java에서 NoclassDeffoundError를 얻는 이유는 무엇입니까? (0) | 2021.04.14 |
Java에서 문자열을 분할하는 방법 (0) | 2021.04.13 |
StringBuilder와 StringBuffer의 차이점 (0) | 2021.04.13 |
문자열이 null이 아니고 비어 있지 않은지 확인하십시오. (0) | 2021.04.13 |
댓글