2
는 getter의 반환 값을 수정하려면 :재정의 클래스 위해 getter 메소드를 차단하는 것은 내가 이런 식으로 내 조언을 정의
public class MyClass {
private String field;
public MyClass() {
}
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}
내 JUnit 테스트 :
public class MyInterceptor {
@Advice.OnMethodExit
public static void intercept(@Advice.Return String value) {
// do my changes
}
}
이 다시 정의 할 수 내 클래스 : 내 테스트를 실행할 때
@Test
public void buddytest() throws Exception {
new ByteBuddy()
.redefine(MyClass.class)
.method(named("getField"))
.intercept(to(MyInterceptor.class))
.make()
.load(getClass().getClassLoader(), ClassReloadingStrategy.fromInstalledAgent());
MyClass myClass = new MyClass();
myClass.setField("xxx");
String field = myClass.getField();
}
는하지만, MyInterceptor.intercept() 메서드가 호출되지 않고,이 예외가 발생합니다 :
java.lang.IllegalStateException: Cannot call super (or default) method for public java.lang.String package.MyClass.getField()
내가 뭘 잘못하고 있니? 미리 감사드립니다.
네, 이제 작동합니다. 감사합니다. – cstripes